Как обновить поля в карте Firestore - PullRequest
0 голосов
/ 09 июня 2019

Не знаю, как добавить новые поля на карту в Firestore, используя переменную, а не жестко закодированное имя поля.

У меня есть структура данных в Firestorm. Коллекция называется 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 });

Я ожидаю, что выход в Firestorm будет люди: {11111:"David, 22222:"Peter, 44444:"Cathy"} но фактический результат на данный момент люди: {11111:"David, 22222:"Peter, x:"Cathy"}

Спасибо

1 Ответ

0 голосов
/ 09 июня 2019

Вам потребуется использовать полный путь к полю в качестве ключа обновления:

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

Это предотвратит перезапись всего поля «люди», так как вы указываете, какое свойство карты нужно изменить напрямую.

Обратите внимание, что имя поля и имя свойства разделены точкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...