繁体   English   中英

如何从 firebase 获取数据并更新

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM