如何解决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 举报,一经查实,本站将立刻删除。