我知道我可以在文档的顶级字段上执行此操作。但是我试图在文档数组内部的字段上运行事务更新。
这是我的“测验”文档的结构:
{
title: '123',
questions: [
{
title: 'question1',
answers: [
{
title: 'answer1',
votes: 0
}
]
}
]
}
这是我正在使用的代码,在“ await tx.update ...”上失败,因为我传递的字符串路径为“ questions [0] .answers [0] .votes”。可能吗还是我必须提取整个文档,更新值并替换它?
final DocumentReference postRef = Firestore.instance.document('quizes/' + id);
Firestore.instance.runTransaction((Transaction tx) async {
DocumentSnapshot postSnapshot = await tx.get(postRef);
if (postSnapshot.exists) {
await tx.update(postRef, <String, dynamic>{'questions[0].answers[0].votes': postSnapshot.data['questions'][0]["answers"][0]["votes"] + 1});
}
});
答案 0 :(得分:0)
有可能吗?还是我必须提取整个文档,更新值并替换它?
为了更新Firestore中数组中的字段,您必须获取数组,更新所需的字段,然后更新文档。您可以使用事务来做到这一点。您将在下面找到有关transactions的一些详细信息。
让我知道这是否有帮助。