Javascript 更新firestore中文档内的对象值
我想更新文档中的对象 正如您在上面的图片中在TransactionMap下所看到的,存款对象就在那里,存款中有一个对象和键值对。所以我想继续在存款对象字段中添加对象。现在,当我试图更新它时,它被新的替换了,它没有得到更新。 代码如下: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")
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提供的点符号来构建要更新的字段的路径。它将是单个字符串键。