如何更新Firestore地图中的字段

时间:2019-06-09 12:13:55

标签: javascript firebase google-cloud-firestore

不知道如何使用变量而不是硬编码的字段名称将新字段添加到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"}

谢谢

1 个答案:

答案 0 :(得分:0)

您需要使用完整的字段路径作为更新的密钥:

var setWithMerge = cityRef.set({
  `people.${x}`: y
});

由于您要指定要直接更改地图的属性,因此这将避免重写整个“人”字段。

请注意,字段名称和属性名称之间用句点分隔。