unity3d Firestore + Unity中的大量数据读取

nhaq1z21  于 2023-04-12  发布在  其他
关注(0)|答案(1)|浏览(175)

我在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内部的数据时,而不是通过代码,阅读随机发生或不是次数,但总是不同的。

uxh89sit

uxh89sit1#

我收到了Firebase支持的回复。我希望Moises不会介意我在这里转发它:)
这似乎与你与Firestore控制台的交互有关,当通过Firebase控制台查看Firestore集合时,每次选择控制台中的不同集合时,都会自动加载一个集合中的前300个文档,当向下滚动一长串文档时如果集合中有更多文档要显示,则将加载接下来的300个文档。通常建议在通过Firebase Console使用时要小心。频繁地在Usage标签和Data标签之间切换可能会导致大量的读取操作。

相关问题