[英]How to fetch data and update it from firebase
我在尝试从 firebase 获取数据并从中更新值时遇到问题。
我有一个餐厅名称和它被挑选的次数(用户选择到 go 到那家餐厅吃饭)。 如果用户决定再次访问 go,我正在尝试检索 numPicked 并通过添加一个来更新它。
在这里,我试图获取一个特定文档并尝试存储 docID 和我需要更新的变量。
docID = doc.id; docID 返回 NULL 意味着 foreach 循环甚至没有被读取。
Future<bool> searchQuery(
{required String restaurantName,
required var userID,
required db}) async {
int addOne = 1; //addes one if it has been picked
//this is not working
try {
Query query2 =
db.where('userId', isEqualTo: FirebaseAuth.instance.currentUser!.uid);
Query query = query2.where('restaurantName', isEqualTo: restaurantName);
await query.get().then((querySnapshot) {
// ignore: avoid_function_literals_in_foreach_calls
querySnapshot.docs.forEach((doc) {
docID = doc.id;
numPicked = doc['numPicked'];
restaurantExist = true;
});
}).catchError((error) {
// print('error querying: #error');
});
} catch (ex) {
// ignore: avoid_print
print(ex);
}
//this is not working
int totalPicked = numPicked + addOne;
//if the restaurant exist then update the numpicked for that specific restaurant
if (restaurantExist) {
try {
var query = db
//.collection('NumRestaurantPicked')
.doc(docID);
await query.update({'numPicked': totalPicked.toString()});
} catch (ex) {}
}
return restaurantExist;
}
docID 和 numPicked 变量未在方法签名中定义,因此无法在 try 块之外访问它们。 它们应该被定义为 class 变量,因此可以从其他方法访问它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.