繁体   English   中英

FieldValue.increment 不起作用但添加“操作数”

[英]FieldValue.increment does not work but adds "operand"

我正在使用一个 firebase 数据库和一个简单的 function 和新的FieldValue.increment来增加一个计数器,但这不起作用,而是添加“操作数”字段而不增加它。

我的 function 超级简单:

exports.updateCounters = functions.https.onRequest((req, res) => {
  // grab the parameters.
  const username = req.query.username;

  var updateObject = { };
  updateObject[username] = admin.firestore.FieldValue.increment(1);
  admin.database().ref('counterstest').update(updateObject);
});

当我部署并调用这个 function 我希望看到

countertest: {
  myusername: 1
}

但我明白了

countertest: {
  myusername: {
    operand: 1
  }
}

相反,操作数: 1 即使我多次调用我的 function 也不会增加。

有人能指出我在这里犯了什么错误吗?

谢谢!

FieldValue.increment()是Cloud Firestore的功能,但是您显然正在尝试将其应用于实时数据库。 这是行不通的-它们是不同的数据库,实时数据库不支持这种原子增量。

您实际上在这里所做的就是将返回的FieldValue对象的JSON表示形式写入Realime数据库。 显然,在内部,FieldValue对象具有一个称为“ operand”的属性,其中包含要增加的值。

我知道这篇文章已经有几年的历史了,但是database.ServerValue.increment可以与 11.X firebase firebase-admin实时数据库一起使用,如下所示:

admin.database().ref('counterstest').update({ myusername: database.ServerValue.increment(1)  })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM