【发布时间】:2020-11-28 23:26:10
【问题描述】:
我在数据库中有 100 个用户文档,我必须将所有文档中的一个字段更新为 0。我们该怎么做?
【问题讨论】:
标签: database firebase flutter google-cloud-firestore document
我在数据库中有 100 个用户文档,我必须将所有文档中的一个字段更新为 0。我们该怎么做?
【问题讨论】:
标签: database firebase flutter google-cloud-firestore document
Firestore 不提供类似 SQL 的“update where”命令来一次更新所有内容,因此您必须:
【讨论】:
正如@Doug 所说,没有直接的方法,您必须查询数据,从QueryDocumentSnapshot 获取DocumentReference 并在其上调用update。
var collection = FirebaseFirestore.instance.collection('collection');
var querySnapshots = await collection.get();
for (var doc in querySnapshots.docs) {
await doc.reference.update({
'single_field': 'newValue',
});
}
【讨论】:
尝试执行以下操作
DocumentSnapshot 并使用引用属性获取其DocumentReference 对象,并为每个文档更新字段的新值 void updateNotificationCount() async {
FirebaseUser _currentUser = await FirebaseAuth.instance.currentUser();
String authid = _currentUser.uid;
var snapshots =
activityFeedRef.document(authid).collection('feedItems').snapshots();
try {
await snapshots.forEach((snapshot) async {
List<DocumentSnapshot> documents = snapshot.documents;
for (var document in documents) {
await document.reference.updateData(<String, dynamic>{
'seen': true,
});
}
});
} catch (e) {
print(e.toString());
}
}
上面的代码只是在用户点击通知托盘时立即将所有未读通知从 false 更新为 true
【讨论】: