我想获取一个字段的值,然后在满足条件时更新它。我想了解哪种方法是最好的。例如我设置了这个文档(取自 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 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 。
谢谢
最佳答案
我解决了。我必须使用返回 DocumentReference
的 .ref,它引用 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");
});
关于javascript - 如何在不再次调用 db.collection 的情况下获取文档并编辑数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54160103/