Я хочу получить значение поля, а затем обновить, если оно удовлетворяет условию. Я хотел бы понять, какой путь самый лучший. Например, я установил этот документ (взятый из здесь ):
db.collection('cities')
.doc('LA')
.set({
name: 'Los Angeles',
state: 'CA',
country: 'USA',
numberOfRestaurant: 100
});
Я хочу уменьшить на 1 значение numberOfRestaurant
. Предположим, это внутри функции.
db.collection('cities')
.doc('LA')
.get()
.then(function(doc) {
var numberOfRestaurant = doc.get('numberOfRestaurant');
if (numberOfRestaurant > 0)
db.collection('cities')
.doc('LA')
.update({ numberOfRestaurant: numberOfRestaurant - 1 });
else
alert("Can't set negative number");
});
Таким образом, я звоню в db.collection 2 раза. Можно ли использовать объект querySnapshot
для обновления значения без повторного вызова db.collection. Примерно так (я знаю, что таким образом выдает ошибку):
db.collection('cities')
.doc('LA')
.get()
.then(function(doc) {
var numberOfRestaurant = doc.get('numberOfRestaurant');
if (numberOfRestaurant > 0)
doc.update({ numberOfRestaurant: numberOfRestaurant - 1 });
else
alert("Can't set negative number");
});
Из Api Reference .get()
вернуть DocumentSnapshot .
Спасибо