#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"
})
})
})
}