我试图在FireStore中的文档中获取值,所以我这样做了。
Task<QuerySnapshot> docRef = db.Collection("Logs").GetSnapshotAsync();
foreach (DocumentSnapshot doc in await docRef){
DocumentSnapshot log = await db.Collection("Logs").Document(doc.Id).GetSnapshotAsync();
Console.WriteLine(log); // How to get the data in log?
}
问题是我不知道如何在日志中获取数据。我试过了,log["infoLog"]["name"]
但是没有用。
如您所见,数据包含一个Map(infoLog),其中包含不同的字符串,整数等。
正确的方法是什么?谢谢!
试过这个
Task<QuerySnapshot> docRef = db.Collection("Logs").GetSnapshotAsync();
foreach (DocumentSnapshot doc in await docRef)
{
DocumentSnapshot log = await db.Collection("Logs").Document(doc.Id).GetSnapshotAsync();
foreach (KeyValuePair<string, object> pair in log.ToDictionary())
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
}
但是数据并没有按顺序排列。(因为我假设是异步的)
当查询官方文档中提到的数据时,可以使用.OrderBy("FIELD_NAME")
或OrderByDescending("FIELD_NAME")
函数从Firestore端获取已经订购的文档。这样,您将已经订购它们,因此您无需在客户端订购它们。
Task<QuerySnapshot> docRef = db.Collection("Logs").OrderBy("FIELD_NAME").GetSnapshotAsync();
foreach (DocumentSnapshot doc in await docRef)
{
DocumentSnapshot log = await db.Collection("Logs").Document(doc.Id).GetSnapshotAsync();
foreach (KeyValuePair<string, object> pair in log.ToDictionary())
{
Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
}
}
只需替换FIELD_NAME
为您要订购的字段的名称即可。如果您想按多个字段进行订购,也可以通过多次订购来完成OrderBy()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句