为什么FirebaseFirerestore事务更新不起作用?

toiithl6  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(81)

下面是代码。更新不起作用,更新后计数仍然为0。

FirebaseFirestore store = FirebaseFirestore.DefaultInstance;
CollectionReference globalRef = store.Collection("global");
DocumentReference doc = globalRef.Document("rank"+rankType);
store.RunTransactionAsync((transaction) =>
{
    return transaction.GetSnapshotAsync(doc).ContinueWith((task) =>
    {
        if (task.Result.Exists)
        {
            int rank = 1;
            int count = 0;
            long t = 0;
            Dictionary<string, object> dic = task.Result.ToDictionary();
            rank = int.Parse(((Dictionary<string, object>)dic["data"])["rank"].ToString());
            count = int.Parse(((Dictionary<string, object>)dic["data"])["count"].ToString());
            t = long.Parse(((Dictionary<string, object>)dic["data"])["timestamp"].ToString());
            if (count >= 200 && timestamp > t)
            {
                transaction.Update(doc, "rank", rank + 1);
                transaction.Update(doc, "count", 0);
                transaction.Update(doc, "timestamp", timestamp + 3600);
            }
            else
            {
                transaction.Update(doc, "count", count + 1);
            }
        }
    });
});

我想增加计数,当计数达到200时,排名应该增加,并重置计数为0。

2o7dmzc5

2o7dmzc51#

我通过将字段计数更改为data.count来修复它。这不是交易的问题;更新在错误的字段上工作。

相关问题