Обновление Firebase с предложением Where - PullRequest
0 голосов
/ 27 мая 2020

Я работаю над приложением флаттера. Я хотел бы выполнить эквивалент обновления SQL с предложением Where . Это мое текущее рабочее решение:

Future<void> updateWhere(String valueForWhere, String valueToUpdate) async {
  try {
    List<ObjectToUpdate> items;
    var query = await Firestore.instance.collection('CollectionName')
      .where(ObjectToUpdate.field1, isEqualTo: valueForWhere)
      .getDocuments();

    if (query.documents.isEmpty)
      return;
    else {
      items = query.documents.map((item) => ObjectToUpdate.deserialize(item.data, item.documentID)).toList();
    }

    for(var item in items) {
      item.field2 = valueToUpdate;
      Firestore.instance.collection('CollectionName')
        .document(item.uid)
        .updateData(item.serialize());
    }
  } 
  catch (e) {
    print(e);
  }
}

Это кажется очень окольным, поскольку мне нужно десериализовать, изменять, сериализовать и обновлять каждый объект по отдельности.

Есть ли более простой и эффективный способ сделать это? Или, может быть, я могу каким-то образом оптимизировать свое текущее решение?

1 Ответ

1 голос
/ 27 мая 2020

Нет, ты правильно делаешь. Firestore не предлагает эквивалента «где обновить», который вы найдете в SQL.

...