#javascript #google-cloud-firestore
#javascript #google-облако-firestore
Вопрос:
Я пытаюсь выполнить запрос к коллекции, и если документ существует, я хочу увеличить счетчик. Это для отслеживания количества обращений. К сожалению, следующий код не работает, и я не уверен, возможно ли то, что я пытаюсь сделать. Я пытаюсь минимизировать чтение Firestore.
db = firebase.firestore(admin);
var users = db.collection("users");
var query = users
.where("userid", "==", userid)
.get()
.then(function(querySnapshot) {
if (querySnapshot.size > 0) {
var docRef = querySnapshot.docs[0];
// does not work
const increment = firebase.firestore.FieldValue.increment(1);
docRef.update("accessCount", increment);
// also does not work
var theDoc = db.collection("users").doc(docRef.id);
console.log(theDoc);
const increment = firebase.firestore.FieldValue.increment(1);
theDoc.update("accessCount", increment);
}
})
Обратите внимание, я получаю действительный docRef, но, похоже, я ничего не могу с этим поделать, кроме как получить данные изнутри … спасибо.
Ответ №1:
Проблема начинается здесь:
var docRef = querySnapshot.docs[0];
Здесь вы получаете не ссылку на документ, а снимок документа. При последующем вызове docRef.update()
это не сработает, потому что у a DocumentSnapshot
нет update
метода. На самом деле вы должны получать там сообщение об ошибке, которое также предотвращает выполнение остальной части вашего кода.
Что-то вроде этого должно работать:
if (querySnapshot.size > 0) {
var docRef = querySnapshot.docs[0].ref;
docRef.update("accessCount", firebase.firestore.FieldValue.increment(1));
}