下面是代码。更新不起作用,更新后计数仍然为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。
1条答案
按热度按时间2o7dmzc51#
我通过将字段计数更改为
data.count
来修复它。这不是交易的问题;更新在错误的字段上工作。