问题描述
在运行用 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 (将#修改为@)