我试图将Firestore字段的值每分钟增加1,因此我创建了计划的Cloud Function:
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
const db = admin.firestore();
const ref = db.collection('count').doc('currentTrack');
export const everyMinuteJob = functions.pubsub
.schedule('every 1 minutes').onRun(context => {
ref.get().then( value => {
if (value.exists) {
const id = value.data().id + 1;
ref.update({ id });
}
});
});
部署此代码时,出现以下错误:
错误TS2532:对象可能是“未定义”: const id = value.data()。id +1;
我已经尝试了多种方法,但是它们总是能解决错误。
此行为的正确方法是什么?
答案 0 :(得分:0)
value
将是DocumentSnapshot类型的对象。根据该API文档,其data()方法可以返回DocumentData或未定义。为了满足严格的TypeScript检查,必须检查未定义的大小写,才能使用返回的DocumentData对象。以前value.event是否返回true都无关紧要-TypeScript不会在exists
属性和返回值data()
之间绘制任何连接。
if (value.exists) {
const data = value.data();
if (data) {
// now TypeScript has a guarantee that data is not undefined
const id = value.data().id + 1;
ref.update({ id });
}
}