Метод updateData не определен для типа Query. Futter, Cloud Firestore - PullRequest
0 голосов
/ 03 августа 2020

Я хотел бы обновить данные в документе на основе запроса. Вот мой код:

Firestore.instance
    .collection("Categories")
    .where("userEmail", isEqualTo: "${user?.email}")
    .updateData({"category_budget_remaining": _remainingCategoryBudget2})
    .then((value){});

Я получаю следующую ошибку: метод updateData не определен для типа Query

Ответы [ 2 ]

1 голос
/ 03 августа 2020

после where() вам нужно получить документы, а затем обновить

where(...).getDocuments().then((val)=> 
   val.documents.forEach((doc)=> {
     doc.reference.updateData({...})
   });
});

, этот код выбирает и обновляет все документы, которые соответствуют условию where. Если вы хотите сделать это только для 1 документа, просто добавьте .limitTo(1) перед getDocuments().

1 голос
/ 03 августа 2020

Как видно из документации API, where () возвращает Query, а Query не имеет метода с именем updateData(). Итак, то, что вы здесь видите, неудивительно.

Firestore не предлагает способ массового обновления документов, таких как команда SQL «обновить где». Что вам нужно сделать, так это выполнить запрос на изменение документов, выполнить итерацию документов в наборе результатов и обновить каждый из них по отдельности. Да, для каждого изменения требуется чтение документа, и нет, альтернативы этому нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...