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.JdbcOdbc...