【问题标题】:Google cloud functions Firebase Update FieldValue.increment(1) using NodeJS - TypeError: FieldValue.increment is not a function谷歌云函数 Firebase 使用 NodeJS 更新 FieldValue.increment(1) - TypeError: FieldValue.increment is not a function
【发布时间】:2022-10-14 13:56:09
【问题描述】:

我在谷歌云功能中使用 NodeJs,我想增加一个文档中一个参数的值

我启动 Firestore:

const Firestore = require('@google-cloud/firestore');
const PROJECTID = 'XXXX';     
const firestore = new Firestore({
  projectId: PROJECTID,
  timestampsInSnapshots: true    
});

我的 .get() 和 .set() 函数可以正常工作。但是当我尝试更新一个增加它的值时,我收到 FieldValue.increment 错误

我试过了:

await snapshot.ref.update({ parameter: FieldValue.increment(1) });

添加:

const FieldValue = require('firebase-admin').firestore.FieldValue;

await snapshot.ref.update({ parameter: FieldValue.increment(1) });

如其他网站所述,并且:

documentRef.update(
  'parameter', Firestore.FieldValue.increment(1)
)

https://cloud.google.com/nodejs/docs/reference/firestore/latest/firestore/fieldvalue 中所述

const admin = require('firebase-admin');
increment = admin.firestore.FieldValue.increment(1);
await snapshotRef.update({ parameter: increment });

但没有一个工作。

错误:

TypeError:admin.firestore.FieldValue.increment 不是函数

或者

TypeError:FieldValue.increment 不是函数

  "dependencies": {
    "firebase-admin": "^6.5.1",
    "nodemailer": "^6.6.1"
  }

【问题讨论】:

  • 最后一个应该是有效的。您是否尝试过重新启动模拟器?并尝试const inc = require("firebase-admin").firestore.FieldValue.increment(1);。如果这不起作用,请从 package.json 分享您的 Firebase 管理员版本
  • 你得到什么样的错误?请在错误日志和函数的完整上下文中提供更多上下文。
  • 错误:TypeError:admin.firestore.FieldValue.increment 不是函数依赖项:{“name”:“sample-http”,“version”:“0.0.1”,“dependencies”:{“firebase-admin”:“ ^6.5.1", "nodemailer": "^6.6.1" } }
  • 你是firebase-admin 版本旧。我在使用该版本时重现了您的错误。考虑使用以下命令将其升级到最新版本:npm i firebase-admin@latest。最新版本解决了这个问题。另外,补充一点,@google-cloud/firestorefirebase-admin 是不同的。 @google-cloud/firestore 也有 FieldValue。您将使用这两个中的哪一个?

标签: node.js google-cloud-firestore google-cloud-functions


【解决方案1】:

release notes 中所述,increment() 于 2019 年 4 月添加到 Firestore SDK,但 Firebase 管理员6.5.1 于 2019 年 1 月发布。升级到最新版本应该可以解决此问题。

【讨论】:

  • 是的,更新了对“firebase-admin”的依赖:“^11.0.1”并运行命令@MarcAnthonyB 发布:npm i firebase-admin@latest 然后:const Firestore = require('@google-cloud/firestore');documentRef.update({parameter: Firestore.FieldValue.increment(1)}) 有效。谢谢
【解决方案2】:

只需将其发布为社区 wiki。用于更新到最新 Firebase 管理员版本的命令。

npm i firebase-admin@latest

您还可以通过将版本更改为最新来修改 package.json 中的特定包。请参阅下面的示例:

"firebase-admin": "latest"

然后运行

npm install

此外,为获得最佳实践,请始终删除 node_modules 文件夹和 package-lock.json,然后在部署应用程序之前运行 npm install

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 1970-01-01
    • 2016-01-05
    • 2021-06-21
    • 1970-01-01
    • 2019-10-17
    • 2020-03-01
    • 1970-01-01
    • 2013-10-30
    相关资源
    最近更新 更多