Я работаю над приложением флаттера. Я хотел бы выполнить эквивалент обновления 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);
}
}
Это кажется очень окольным, поскольку мне нужно десериализовать, изменять, сериализовать и обновлять каждый объект по отдельности.
Есть ли более простой и эффективный способ сделать это? Или, может быть, я могу каким-то образом оптимизировать свое текущее решение?