我在Unity中使用SDK有问题。关于我的Firestore:在我的游戏中有一个基本的用户集合,在每个子文件中都有一个进度集合,然后文件的数量与玩家的进度有关。问题:我几乎不允许玩家从数据库中读取数据只是为了写入,但当我想要改变他们的数据时(让他们能够进行测试),我便会通过另一个服务提供给他们这个机会,但出于某种原因,不是两次文档读取,而是150至600次读取。这太多了,我不明白为什么会这样。有人知道吗?以下是来自Firestore Usage的截图:在这里输入图像描述下面是我读取数据的代码:
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内的数据时,而不是通过代码,读取是随机发生的,或者不是次数,但它总是不同的。
我收到了来自Firebase支持的回复。我希望Moises不会介意我转发到这里:)
这似乎与您与Firestore控制台的交互有关。当通过Firebase控制台查看Firestore集合时,每次选择控制台中不同的集合时,都会自动加载集合中的前300个文档。当向下滚动一长串文档时,如果集合中有更多文档要显示,则将加载下300个文档。通常建议在通过Firebase控制台使用时要小心。频繁地在Usage选项卡和Data选项卡之间切换可能会导致大量的读取操作。留意。