Я знаю, что могу сделать это в поле верхнего уровня документа. Но я пытаюсь запустить обновление транзакции для поля внутри массива документа.
Вот как структурирован мой документ «викторина»:
{
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});
}
});