Javascript 更新firestore中文档内的对象值

Javascript 更新firestore中文档内的对象值,javascript,node.js,firebase,google-cloud-firestore,Javascript,Node.js,Firebase,Google Cloud Firestore,我想更新文档中的对象 正如您在上面的图片中在TransactionMap下所看到的,存款对象就在那里,存款中有一个对象和键值对。所以我想继续在存款对象字段中添加对象。现在,当我试图更新它时,它被新的替换了,它没有得到更新。 代码如下: const transactionMapDocRef = db .collection("users") .doc(paymentData.notes[0]) .collection("Transactions")

我想更新文档中的对象

正如您在上面的图片中在TransactionMap下所看到的,存款对象就在那里,存款中有一个对象和键值对。所以我想继续在存款对象字段中添加对象。现在,当我试图更新它时,它被新的替换了,它没有得到更新。 代码如下:

const transactionMapDocRef = db
        .collection("users")
        .doc(paymentData.notes[0])
        .collection("Transactions")
        .doc(currentDate);
      try {
        const doc = await transactionMapDocRef.get();
        if (!doc.exists) {
          console.log("No such document!");
          transactionMapDocRef.set({
            TransactionMap: {
              Deposit: {
                [paymentData.notes[1]]: data,
              },
            },
          });
          console.log("Successfully saved");
          return res.status(200).json({ message: "Successfully saved" });
        } else {
          transactionMapDocRef.update({
            TransactionMap: {
              Deposit: {
                [paymentData.notes[1]]: data,
              },
            },
          });
          console.log("Successfully Updated");
          return res.status(200).json({ message: "Successfully Updated" });
        }
      } catch (err) {
        console.log("Error getting document", err);
        return res.status(500).json({
          message: "Something went wrong!",
        });
      }
请帮忙。谢谢你

而不是这个:

          transactionMapDocRef.set({
            TransactionMap: {
              Deposit: {
                [paymentData.notes[1]]: data,
              },
            },
          });
它将替换整个文档,您需要使用
update()
以及Firstore的点表示法来指示要更改的特定字段值

          transactionMapDocRef.update({
            [`TransactionMap.Deposit.${paymentData.notes[1]}`]: data
          });

它不起作用。如果“TransactionMap”对象不存在,set方法工作正常,但如果存在,我想在“存款”中添加多个对象,但每次旧对象被“存款”对象中的新对象替换@Doug Stevenson我这样使用:-transactionMapDocRef.update({“TransactionMap.Deposit”:{[paymentData.notes[1]]:data,},},});但它仍然不起作用。您的建议显示语法错误。您必须标识要更新的项的完整路径,并将其作为要传递的对象的键。您不能对对象进行任何嵌套更新。在“存款”对象(在图像中提到)内,我不能添加多个对象。这就是你想说的??不,我是说你需要使用Firestore提供的点符号来构建要更新的字段的路径。它将是单个字符串键。