我想获取一个字段的值,然后在满足条件时进行更新。我想了解哪种是最好的方法。例如,我设置了此文档(取自here):
db.collection('cities')
.doc('LA')
.set({
name: 'Los Angeles',
state: 'CA',
country: 'USA',
numberOfRestaurant: 100
});
我想将numberOfRestaurant
的值减少1。假设它在函数内部。
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。是否可以使用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。
谢谢
答案 0 :(得分:1)
我解决了。我必须使用.ref返回一个DocumentReference
,该引用指向Firestore数据库中的文档位置。
db.collection('cities')
.doc('LA')
.get()
.then(function(doc) {
var numberOfRestaurant = doc.get('numberOfRestaurant');
if (numberOfRestaurant > 0)
doc.ref.update({ numberOfRestaurant: numberOfRestaurant - 1 });
else
alert("Can't set negative number");
});