每分钟将字段值增加1

时间:2019-07-13 14:40:42

标签: typescript firebase google-cloud-firestore google-cloud-functions

我试图将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;

我已经尝试了多种方法,但是它们总是能解决错误。

此行为的正确方法是什么?

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 });
    }
  }