云函数正在将 NaN 写入 firestore

问题描述 投票:0回答:2

我创建了一个云函数来在每次有新关注者时更新关注计数。但是,无论出于何种原因,

NaN
都会被写入文档,而不是递增计数。什么是
NaN
?为什么写的是它而不是适当的数字?这是我的代码:

var transaction = db.runTransaction(t => {
    return t.get(countRef)
        .then(doc => {
            var new_count = doc.data.following_count + 1;
            t.update(countRef, { following_count: new_count });
        });
}).then(result => {
    console.log('Transaction success!');
})
.catch(err => {
    console.log('Transaction failure:', err);
});
javascript google-cloud-functions nan google-cloud-firestore
2个回答
2
投票

NaN 是不是数字。正如一些评论者所说(但没有实际发布答案),这是由对非数字输入的操作引起的,例如未定义的值或字符串。


0
投票

Firestore 增量字段

Firestore 现在支持特定的

increment(n)
操作,该操作以原子方式将您选择的常量添加到文档中的字段中。在此处阅读有关增量值的文档。

值得注意的是,这个相对较新的添加涵盖了以下开箱即用的极端情况:

  • 如果请求的文档不存在,则会创建该文档。
  • 如果所需字段不是数值(
    NaN
    undefined
    、任何其他数据类型或不存在),则会将该字段设置为请求的值。

使用

increment(n)
操作将是一次重大升级,原因如下:

  • 它不需要交易——代码更简单!
  • 它可以轻松地从客户端/服务器运行,无需服务器功能 - 复杂性更低!
  • 它为您涵盖了极端情况——更少的错误!

更快地计算值

Firestore 对单个文档每秒可以更新的次数有限制。如果很多用户同时使用您的应用程序,您可能需要使用一些其他技术来分散写入。请参阅这些资源以获取更多信息:

© www.soinside.com 2019 - 2024. All rights reserved.