【发布时间】:2021-06-11 18:43:21
【问题描述】:
好的,所以我有多个相同的特定文档 ID,但每个 ID 用于不同的集合和用途。使用集合组,因为这些文档嵌套在子集合中,我能够找到这些文档并打印它们。我将如何使用其他数据同时更新所有这些文档中的特定字段?就我而言,尽管这些文档位于不同的集合中,但它们有一个名为 plastics 的字段,我想用 int 数据更新它们。
这是我用来检索这些文档并过滤以仅打印我特别需要的文档的代码:
final String uid = FirebaseAuth.instance.currentUser.uid;
QuerySnapshot querySnapshot = await FirebaseFirestore
.instance
.collectionGroup("Members")
.get();
for (int i = 0; i < querySnapshot.docs.length; i++) {
var a = querySnapshot.docs[i];
if (a.id == uid) {
print(a.id);
}
}
这里还有一些我之前用于更新单个文档中的字段的代码,但并不是所有这些都像我在这种情况下需要的那样。
Future<bool> addPlastic(String amount) async {
try {
String uid = auth.currentUser.uid;
var value = double.parse(amount);
DocumentReference documentReference =
FirebaseFirestore.instance.collection('some collection').doc(some document);
FirebaseFirestore.instance.runTransaction((transaction) async {
DocumentSnapshot snapshot = await transaction.get(documentReference);
if (!snapshot.exists) {
documentReference.set({'plastics': value});
return true;
}
double newAmount = snapshot.data()['plastics'] + value;
transaction.update(documentReference, {'plastics': newAmount});
return true;
});
} catch (e) {
return false;
}
}
【问题讨论】:
标签: firebase flutter google-cloud-firestore