javascript - 如何在不再次调用 db.collection 的情况下获取文档并编辑数据?

标签 javascript firebase google-cloud-firestore

我想获取一个字段的值,然后在满足条件时更新它。我想了解哪种方法是最好的。例如我设置了这个文档(取自 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/

相关文章:

php - CSV 文件无法在 IE 中打开

javascript - 这个绑定(bind)函数...以及这些参数,以及这个应用方法...我不确定我是否理解它在这个示例中是如何工作的

java - 如何使用 Firebase ML 套件识别地标?

android - 如何将 Firebase 消息传送到 Xamarin.Android 应用程序?

swift - 从 Firestore 中获取用户配置文件的数据(swift、iOS、Xcode、firebase/firestore)

json - 如何将JSON数据保存到Google Firebase的Firestore数据库?

javascript - Sequelize : difference of DataTypes and Sequelize

javascript - Morris.Line js 无法将年更改为月

node.js - firebase.database() 多个实例

firebase - Firestore : How to design a Data model to make querying documents that are not exist in an array possible?