Я использую базу данных firebase и простую функцию с новым FieldValue.increment для увеличения счетчика, но это не работает, но добавляет поле «операнд», даже не увеличивая его.
Моя функция очень проста:
exports.updateCounters = functions.https.onRequest((req, res) => {
// grab the parameters.
const username = req.query.username;
var updateObject = { };
updateObject[username] = admin.firestore.FieldValue.increment(1);
admin.database().ref('counterstest').update(updateObject);
});
Когда я развертываю и вызываю эту функцию, я ожидаю увидеть
countertest: {
myusername: 1
}
а я вижу
countertest: {
myusername: {
operand: 1
}
}
вместо этого и операнд: 1 никогда не увеличивается, даже если я вызываю свою функцию несколько раз.
Может ли кто-нибудь указать, какую ошибку я здесь делаю?
Спасибо!
FieldValue.increment()
— это функция Cloud Firestore, но вы, очевидно, пытаетесь применить ее к базе данных реального времени. Это не сработает — это разные базы данных, а база данных реального времени не поддерживает такие атомарные приращения.
На самом деле здесь вы записываете JSON-представление возвращаемого объекта FieldValue в базу данных Realime. По-видимому, внутренне объект FieldValue имеет свойство под названием «операнд», которое содержит значение для увеличения.
о, это многое объясняет. Спасибо Дуг, я не понял, что это связано только с Firestore