我在Unity中使用SDK时遇到了问题。关于我的Firestore:在我的游戏中有一个基本的用户集合,在每个子文档,其中有一个进度集合,然后与玩家的进度文件的数量.问题:我几乎不允许玩家从数据库中读取数据只是为了写,但是当我想改变他们数据中的某些东西时(给予他们访问测试),然后我通过另一个服务抛给他们这个机会,但由于某种原因,而不是两次文档读取,发生150到600次读取。这是很多,我不明白为什么会这样。有人知道吗?下面是Firestore Usage的截图:enter image description here下面是读取数据的代码:
public static async Task<Dictionary<string, object>> GetDocSnapshotAsync(string collection, string doc)
{
var result = new Dictionary<string, object>();
var getCompleted = false;
var documentReference = FirebaseFirestore.DefaultInstance.Collection(collection).Document(doc);
documentReference.GetSnapshotAsync().ContinueWithOnMainThread(task =>
{
if (task.Result.Exists)
{
result = task.Result.ToDictionary();
}
getCompleted = true;
});
while (!getCompleted)
{
await Task.Delay(10);
}
return result;
}
public static async Task<Dictionary<string, object>> GetSubDocSnapshotAsync(string collection, string doc, string subCollection, string subDoc)
{
var result = new Dictionary<string, object>();
var getCompleted = false;
var documentReference = FirebaseFirestore.DefaultInstance.Collection(collection).Document(doc).Collection(subCollection).Document(subDoc);
documentReference.GetSnapshotAsync().ContinueWithOnMainThread(task =>
{
if (task.Result.Exists)
{
result = task.Result.ToDictionary();
}
getCompleted = true;
});
while (!getCompleted)
{
await Task.Delay(10);
}
return result;
}
我试图在不接触Firestore内部的情况下执行正常的写入和读取,它们工作得很好。然而,当我手动更改Firestore内部的数据时,而不是通过代码,阅读随机发生或不是次数,但总是不同的。
1条答案
按热度按时间uxh89sit1#
我收到了Firebase支持的回复。我希望Moises不会介意我在这里转发它:)
这似乎与你与Firestore控制台的交互有关,当通过Firebase控制台查看Firestore集合时,每次选择控制台中的不同集合时,都会自动加载一个集合中的前300个文档,当向下滚动一长串文档时如果集合中有更多文档要显示,则将加载接下来的300个文档。通常建议在通过Firebase Console使用时要小心。频繁地在Usage标签和Data标签之间切换可能会导致大量的读取操作。