云功能作为http使用,但不作为预定功能使用

问题描述 投票:0回答:1

我每天的预定功能如下:

export const dailyExecutedFunction = async (): Promise<void> => {
  try {
    // some other code

    setRoutineAnalytics();

  } catch (error) {
    functions.logger.error(error);
    functions.logger.error(
      'Something went wrong with daily executed function',
      { structuredData: true }
    );
  }
};

还有

setRoutineAnalytics
功能:

export async function setRoutineAnalytics(): Promise<void> {
  try {
    functions.logger.info('A');

    const date = getDateFromDaysAgo(1);

    const dailyRoutines = await firestore
      .collection('today_routines')
      .where('date', '==', date)
      .get(); // around 300 - 400 docs

    functions.logger.info('B');

    // update routine analytics with some other code

  } catch (error) {
    functions.logger.error(error);
    functions.logger.error(
      'Something went wrong with setting routine analytics',
      { structuredData: true }
    );
  }
}

我已经验证,当我使用http云函数手动调用它时,

setRoutineAnalytics
工作正常(
functions.https.onRequest
)。但是,当它被预定函数调用时不起作用(
functions.pubsub
)。

检查日志浏览器,“A”被记录,但“B”没有。也没有记录任何错误消息。

这里可能出现什么问题?

javascript google-cloud-firestore google-cloud-functions
1个回答
0
投票

我设法通过向 firestore 查询添加限制来使其工作。但不知道为什么会这样。

    const dailyRoutines = await firestore
      .collection('today_routines')
      .where('date', '==', date)
      .limit(100) // added limit
      .get();
© www.soinside.com 2019 - 2024. All rights reserved.