javascript - 如何在不再次调用 db.collection 的情况下获取文档和编辑数据?
问题描述
我想获取一个字段的值,然后在它满足条件时进行更新。我想了解哪种方法最好。例如我设置了这个文件(取自这里):
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。谢谢
解决方案
我解决了。我必须使用 .ref 来返回DocumentReference
指向 Firestore 数据库中文档位置的 a。
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 - 带有不区分大小写标志'i'和全局的正则表达式javascript不起作用
- css - 使用宽度与使用最小宽度和最大宽度
- python - 子模块上的 ModuleNotFoundError
- php - 身份验证与一些工匠命令冲突
- git - Git 与 AWSCodecommit
- scala - 为什么我无法在读取 xml 和过滤器时过滤此条件
- python - 在 Ubuntu Azure VM 上找到 SQL Server 的 ODBC 驱动程序 13.0
- python-3.x - 强制执行 DataFrame 类型并允许 NaN
- android - 是否可以从 Android 上的 TOF(飞行时间)传感器读取数据?
- tfs - 有没有办法从构建我的工件的源文件或文件夹名称中抓取变量信息?