我每天的预定功能如下:
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”没有。也没有记录任何错误消息。
这里可能出现什么问题?
我设法通过向 firestore 查询添加限制来使其工作。但不知道为什么会这样。
const dailyRoutines = await firestore
.collection('today_routines')
.where('date', '==', date)
.limit(100) // added limit
.get();