Firestore增量int值(如果存在颤振)

时间:2020-04-02 00:58:30

标签: firebase flutter google-cloud-firestore

嗨,我正在尝试开发一个应用程序,但我需要一些帮助,我有一个功能,如果项目存在于Firestore上,那么我只需要这样做,我需要增加它的“数量”值。我已经获取并打印了值,但是我需要一些帮助以检查和增加值

String checker = await Firestore.instance
        .collection('cart')
        .document('LIihBLtbfuJ8Dy640DPd')
        .get()
        .then((DocumentSnapshot ds) => ds.data[foodItem.name]);
    if (checker == foodItem.name) {
      await Firestore.instance
          .collection('cart')
          .document('LIihBLtbfuJ8Dy640DPd')
          .get()
          .then((DocumentSnapshot ds) =>
              a = ds.data[foodItem.name]['quantity']);

      Firestore.instance
          .collection("cart")
          .document("LIihBLtbfuJ8Dy640DPd")
          .updateData({
        foodItem.name: {'quantity': q++}
      });
    } else {
      Firestore.instance.runTransaction((Transaction transaction) async {
        await transaction.update(
            Firestore.instance
                .collection("cart")
                .document("LIihBLtbfuJ8Dy640DPd"),
            {
              foodItem.name: {
                'itemName': foodItem.name,
                'imgUrl': foodItem.imageAssetPath,
                'itemPrice': foodItem.price,
                'quantity': q,
              }
            });
      });
    }

enter image description here 这是我的消防站的图片,您可以看到那里有嵌套节点

1 个答案:

答案 0 :(得分:2)

如果字段不存在,这就是您想要增加一个值的内容。firebase将使用1的值创建它。对于您的问题的检查器部分,我感到困惑。

Firestore.instance.collection("cart")
.document("LIihBLtbfuJ8Dy640DPd")
.setData({foodItem.name: {"quantity": FieldValue.increment(1)}});