微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Firestore Admin SDK FieldValue.increment 返回错误值

如何解决Firestore Admin SDK FieldValue.increment 返回错误值

在运行用 firebase-functions-test 包装的云函数时使用 FieldValue.increment 时出现以下错误

参数“data”的值不是有效的 Firestore 文档。

无法序列化类型为“NumericIncrementTransform”的对象(在字段“count”中找到)。

Firestore 不支持具有自定义原型的 JavaScript 对象(即通过“new”运算符创建的对象)。

这是包装好的代码

  // `functions` is the firebase-functions module 
  // `firestore` is an initialized FirebaseFirestore.Firestore instance pointing to the 
  //  Firestore emulator
  const { functions,firestore } = require('../../firebase');
  const getTestRelationshipRefs = require('../utils/getTestRelationshipRefs');
  const admin = require('firebase-admin');

  module.exports = functions.firestore
    .document('orgs/{orgId}/tests/{testId}')
    .onUpdate(async (change,context) => {
      const beforeData = change.before.data();
      const afterData = change.after.data();

      const relationshipRefs = getTestRelationshipRefs(afterData,context.orgId);
      const batch = firestore.batch();
   
      if (beforeData.active === false && afterData.active === true) {
        for (const ref of relationshipRefs) {
          batch.set(
            ref,{ count: admin.firestore.FieldValue.increment(1) },{
              merge: true,}
          );
        }
      }

还有其他类似的问题,例如:Firebase cloud function - Unhandled error Error: Update()

但看起来我正在做发布的解决方案。

我看到的其他帖子表明这可能是依赖关系树中有不同版本的 @google-cloud/firestore 的结果。我不认为在这种情况下就是这样,但很高兴犯错。

我的 package.json 中所有与 firebase 相关的依赖项是:

"firebase-admin": "^9.5.0","firebase-functions": "^3.13.2","firebase-tools": "^9.6.1","@firebase/rules-unit-testing": "^1.2.5","firebase-functions-test": "^0.2.3",

这是npm ls @google-cloud/firestore输出

└─┬ firebase-admin@9.5.0
  └── @google-cloud/firestore@4.9.8 

为什么 admin.firestore.FieldValue.increment 返回错误的值?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?