Я использую Firestore и пытаюсь удалить условие гонки в приложении Flutter с помощью транзакции использования.
У меня есть подколлекция, в которой максимум 2 документа добавляются.
Состояние гонки означает, что может быть более 2 документовдобавьте, потому что клиентский код использует setData
.Например:
Firestore.instance.collection(‘collection').document('document').collection('subCollection’).document(subCollectionDocument2).setData({
‘document2’: documentName,
});
Я пытаюсь использовать транзакцию, чтобы убедиться, что добавлено максимум 2 документа.Таким образом, если коллекция была изменена (например, новый документ добавлен в коллекцию) во время выполнения транзакции, транзакция завершится неудачей.
Но я прочитал документы, и кажется, что транзакция использует больше для условия гонки, где установлено поле в документе,не добавлять документ во вложенную коллекцию.
Например, если попытаться реализовать:
Firestore.instance.collection(‘collection').document('document').collection('subCollection').runTransaction((transaction) async {
}),
Дать ошибку:
ошибка: метод 'runTransaction' не определендля класса 'CollectionReference'.
Может ли транзакция использоваться для смены монитора на подколлекцию?
Кто-нибудь знает другое решение?