Firebase 如何在Firestore查询中组合相同的键:值对之和
我有firestore数据库设置,其中的条目如下Firebase 如何在Firestore查询中组合相同的键:值对之和,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我有firestore数据库设置,其中的条目如下 Database/users/(userId)/cart/ - dT3897G5H9398T5H quantity: 1 - aG895T398HG509349 quantity: 3 - aG895T398HG509349 quantity: 6 我想得到这些量的总和。。。如果我这样做: QuerySnapshot snapshot = await Firestore.inst
Database/users/(userId)/cart/
- dT3897G5H9398T5H
quantity: 1
- aG895T398HG509349
quantity: 3
- aG895T398HG509349
quantity: 6
我想得到这些量的总和。。。如果我这样做:
QuerySnapshot snapshot = await Firestore.instance
.collection('users')
.document(userId)
.collection('cart')
.getDocuments();
if (snapshot == null) {
return;
}
snapshot.documents.forEach((doc) {
var cartTotal;
cartTotal = doc.data['quantity'];
print(cartTotal);
我得到
I/flutter ( 5371): 1
I/flutter ( 5371): 3
I/flutter ( 5371): 6
我不知道如何组合这些值的总和:(您应该按照以下行修改代码:
getCartTotal(String userId) async {
var cartTotal = 0;
QuerySnapshot snapshot = await Firestore.instance
.collection('users')
.document(userId)
.collection('cart')
.getDocuments();
if (snapshot == null) {
return;
}
snapshot.documents.forEach((doc) {
cartTotal = cartTotal + doc.data['quantity'];
});
print(cartTotal);
}
在当前代码中,对于QuerySnapshot
中的每个文档,您是:
cartotal
变量cartotal
cartotal的值
请注意,如果您计划使用包含大量文档(即订单)的购物车,您可以使用不同的方法。例如,您可以使用云函数计算每个购物车的金额(每次购物车中创建新文档时),而不是每次要获取金额时都查询购物车的所有文档。请尝试以下代码:
return ref.collection('users').get().then(snapshot => {
let total_count = 0;
snapshot.forEach(doc => {
total_count += Number(doc.data().quantity);
});
return total_count;
});
请避免使用新代码修改您的原始问题。这会妨碍其他读者理解您的确切问题。如果您想添加一些新代码,请将其添加到问题的底部,指明更改内容以及更改原因。谢谢!我已经调整了我答案的代码。但是,请注意,您不需要这样做如果(doc==null){return;},请执行
,因为“QueryDocumentSnapshot包含作为查询的一部分从Firestore数据库中的文档读取的数据。文档保证存在…查询结果仅包含现有文档”,请参阅