不知道如何使用变量而不是硬编码的字段名称将新字段添加到Firestore中的地图中。
我在风暴中有一个数据结构。该集合称为webQuiz,文档称为'12345。数据结构如下:
roomName: Demo0
roomNumber: 46532
people:{11111:"David, 22222:"Peter}
请注意,人是地图数据对象。
我想在人员地图中添加另一个字段。下面的代码有效,但不是看起来像的数据
people:{11111:"David, 22222:"Peter, 44444:"Cathy"}
看起来像
people:{11111:"David, 22222:"Peter, x:"Cathy"}
在这种情况下,如何使用保存字段名称的变量? x应该是一个变量,但实际上是作为属性选择的。
function testing(){
var x = "44444"
var y = "Cathy"
var cityRef = db.collection('webQuiz').doc('12345');
var setWithMerge = cityRef.set({
people: {x: y}
}, { merge: true });
我希望在风暴中的输出为
人员:{11111:"David, 22222:"Peter, 44444:"Cathy"}
,但目前的实际输出是
人:{11111:"David, 22222:"Peter, x:"Cathy"}
谢谢
答案 0 :(得分:0)
您需要使用完整的字段路径作为更新的密钥:
var setWithMerge = cityRef.set({
`people.${x}`: y
});
由于您要指定要直接更改地图的属性,因此这将避免重写整个“人”字段。
请注意,字段名称和属性名称之间用句点分隔。