Firebase where() не работает для выполнения запроса

#javascript #firebase

#javascript #firebase

Вопрос:

У меня возникла проблема, когда я попытался использовать where() для запроса моей базы данных, сначала я добавляю данные в базу данных, которая выглядит следующим образом:

 addComment() { // works
    db.collection("cities").doc("LA").add({
    content: "Test 123456"
    })
    .then(function() {
        console.log("Document successfully written!");
    })
    .catch(function(error) {
        console.error("Error writing document: ", error);
    });
}   
          
  

AddComment работает, но когда я пытаюсь использовать метод .update() для изменения данных, это не удалось


Эта функция не удалась, она показывает: where(…).update не является функцией. // Я также пробовал .set() , .delete(), метод, который просто не работает

 editComment() { // don't work
    db.collection("cities").where("content", "==", "Test 123456").update({
            content: "Test 654321"
            })
            .then(function() {
                console.log("Document successfully written!");
            })
            .catch(function(error) {
                console.error("Error writing document: ", error);
            });
        }
    }
  

Ответ №1:

когда вы используете метод «where», вы возвращаете querysnapshot, и у этого нет методов (обновить, добавить, установить, удалить). если вы хотите использовать эти методы, вы должны получить documentSnapshot с помощью метода doc .

Теперь, если вы хотите продолжать использовать метод where, вам следует перебирать результат querysnapshot.docs , затем ссылаться на каждый документ и обрабатывать их. что-то вроде этого:

     editComment() {
        db.collection("cities").where("content", "==", "Test123456").then(querysnapshot => {
        querysnapshot.forEach(doc => {
        doc.ref.update({
                   content: "Test 654321"
                  })
         })
    
      })
    
    }