Как обновить документ в Firestore на основе запроса - PullRequest
0 голосов
/ 10 ноября 2019

Я создаю страницу веб-формы, которая обновляет поля ввода в соответствующий документ пожарного депо на основе условия. Как это можно сделать?

Первая часть, где я получаю результаты запроса, в порядке, так как консольный журнал показывает правильный результат запроса. Тем не менее, вторая часть для обновления этого документа не работает

  const reportForm = document.querySelector('#daily-reports');



reportForm.addEventListener('submit', (e) => {
    e.preventDefault();

    const forward = reportForm['forward'].value;
    const reflected = reportForm['reflected'].value;
    const upserror = reportForm['ups-switch'].value;
    const transerror = reportForm['trans-switch'].value;
    const transDesc = reportForm['transDesc'].value;
    const upsDesc = reportForm['upsDesc'].value;


    console.log(forward, reflected, upserror, transerror, transDesc, upsDesc);
    firebase.initializeApp(config);
    const db = firebase.firestore();
    db.settings({timestampsInSnapshots: true});
    firebase.auth().onAuthStateChanged(user => { 
         if(user) {
      console.log(user.uid); 
      console.log(user.email);

//Query begins here
     db.collection('Stations').where('userId', "==",    user.uid).get().then(function(querySnapshot) {
                 querySnapshot.forEach(function (doc) {
                     doc.data().update(
                         {
                                          "ForwardPower": forward,
                                          "ReflectedPower": reflected,
                                          "TransDesc": transDesc,
                                          "TransmitterError": transerror,
                                          "UPSError" : upserror,
                                          "UPSDesc": upsDesc}
                     );
                     console.log(doc.id, " => ", doc.data());
                 });
             }).catch(function(error) {
                 console.log("Error getting documents: ", error);
             });

}
});



});

После запуска кода я получаю сообщение об ошибке:

Error getting documents:  TypeError: "doc.data(...).update is not a function"
    <anonymous> func.js:42
    forEach database.ts:2131
    forEach document_set.ts:97
    inorderTraversal sorted_map.ts:324
    inorderTraversal sorted_map.ts:136
    forEach document_set.ts:96
    forEach database.ts:2130
    <anonymous> func.js:41

1 Ответ

0 голосов
/ 10 ноября 2019

data () используется для DocumentSnapshot только для получения его необработанного содержимого. Возвращенный объект является простым объектом JavaScript и не имеет методов.

Если вы хотите обновить документ, представленный DocumentSnapshot, используйте свойство ref этого объекта, чтобы получить DocumentReference , затем вызовите метод update () для этого объекта.

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