Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 使用flatter更新Firestore云中的文档值,该文档只有唯一的键值_Firebase_Flutter_Google Cloud Firestore_Cloud - Fatal编程技术网

Firebase 使用flatter更新Firestore云中的文档值,该文档只有唯一的键值

Firebase 使用flatter更新Firestore云中的文档值,该文档只有唯一的键值,firebase,flutter,google-cloud-firestore,cloud,Firebase,Flutter,Google Cloud Firestore,Cloud,我是云Firestore的新手,但已经做了一些CRUD操作,但现在我真的被这个东西卡住了 “tiposFrota”集合中的每个文档都有一个具有唯一值的键“nome:”,没有文档具有与“nome:”键相同的值 问题是,每当用户向其他集合添加另一个“Truck”时,我需要将“qtde:”的值增加1,当用户删除“Truck”时,程序将把该数字增加-1,用作计数器 我设法创建了一个更新键值的操作,但仅当您拥有文档id时,但在本例中,id是自动生成的,因为它们可能会在“tiposFrota”集合中添加或

我是云Firestore的新手,但已经做了一些CRUD操作,但现在我真的被这个东西卡住了

“tiposFrota”集合中的每个文档都有一个具有唯一值的键“nome:”,没有文档具有与“nome:”键相同的值

问题是,每当用户向其他集合添加另一个“Truck”时,我需要将“qtde:”的值增加1,当用户删除“Truck”时,程序将把该数字增加-1,用作计数器

我设法创建了一个更新键值的操作,但仅当您拥有文档id时,但在本例中,id是自动生成的,因为它们可能会在“tiposFrota”集合中添加或删除标准值

FirebaseFirestore.instance
.collection('controladores')
.doc('contadores')
.update({'numFrota': FieldValue.increment(1)}),
如果有人能帮忙的话,我真的受不了了


谢谢

Woah,我自己找到了一个解决方案,这篇帖子

由于“nome:”值对于“tiposFrota”集合中的每个文档都是唯一的,因此我可以使用.where语句作为所述文档的筛选器,获取所有文档的快照(但显然只获取一个),并在调用文档时使用“forEach”方法使用“.id”参数创建函数

FirebaseFirestore.instance
.collection('tiposFrota')
.where('nome', isEqualTo: carMake)
.get()
.then((querySnapshot) { 
  querySnapshot.docs.forEach((element) {
     FirebaseFirestore.instance
     .collection('tiposFrota')
     .doc(element.id)
     .update({
       'qtde': FieldValue.increment(1)});
  });
}),

哇,我自己找到了一个解决办法,这篇帖子

由于“nome:”值对于“tiposFrota”集合中的每个文档都是唯一的,因此我可以使用.where语句作为所述文档的筛选器,获取所有文档的快照(但显然只获取一个),并在调用文档时使用“forEach”方法使用“.id”参数创建函数

FirebaseFirestore.instance
.collection('tiposFrota')
.where('nome', isEqualTo: carMake)
.get()
.then((querySnapshot) { 
  querySnapshot.docs.forEach((element) {
     FirebaseFirestore.instance
     .collection('tiposFrota')
     .doc(element.id)
     .update({
       'qtde': FieldValue.increment(1)});
  });
}),