【问题标题】:FieldValue.increment does not work but adds "operand"FieldValue.increment 不起作用但添加“操作数”
【发布时间】:2019-04-09 09:36:36
【问题描述】:

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

我的功能超级简单:

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);
});

当我部署和调用这个函数时,我希望看到

countertest: {
  myusername: 1
}

但我明白

countertest: {
  myusername: {
    operand: 1
  }
}

instead and operand: 1 即使我多次调用我的函数也不会递增。

谁能指出我在这里犯了什么错误?

谢谢!

【问题讨论】:

    标签: javascript firebase google-cloud-firestore google-cloud-functions


    【解决方案1】:

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

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

    【讨论】:

    • 哦,这解释了很多。谢谢 Doug,我还没有意识到这仅与 Firestore 相关
    猜你喜欢
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2023-04-07
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2017-11-12
    相关资源
    最近更新 更多