【发布时间】:2019-12-05 12:39:16
【问题描述】:
我正在尝试使用 Firestore 触发器在 Firebase Cloud Functions 中进行简单的原子增加/减少。 为了测试这些,我想使用 Firestore 模拟器执行本地测试。
但我总是得到错误
FirebaseError: Function DocumentReference.update() called with invalid data. Unsupported field value: a custom object (found in field myfield)
我的代码就这么简单
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
export const mytest = functions.firestore.document('my/{doc}').onUpdate(async (change, context) => {
return perform();
});
export async function perform(): Promise<FirebaseFirestore.WriteResult> {
const myDocRef = .... // this is a FirebaseFirestore.DocumentReference
const decrement = admin.firestore.FieldValue.increment(1);
return myDocRef.update({
myfield: decrement
});
}
在我的测试中,我只调用了perform 函数,然后我收到了上述错误。肯定是 FieldValue.increment 导致错误,因为如果我只是在更新调用中输入一个硬编码的数字而不是 decrement,它就可以工作(更新到该硬编码的数字)。
我使用的是 Firebase CLI 7.2.1 和模拟器 1.6.2,根据 Most efficient way to increment a value of everything in Firebase 和 https://github.com/firebase/firebase-js-sdk/issues/1799 应该支持模拟器中的 FieldValue.increment。
我做错了什么?
【问题讨论】:
标签: node.js firebase google-cloud-firestore google-cloud-functions firebase-cli