从firebase云函数返回null-后台触发器



使用带有后台触发器的firebase云函数,如果没有处于挂起状态的promise,Doug Stevenson建议我们返回null。以下是他建议的两个地方:

https://youtu.be/7IkUgCLr5oA?t=120

https://stackoverflow.com/a/52214464/188740

云函数中的null有什么特殊处理吗?

例如,所有这些都应该正确终止:

export const onFooWrite = functions.firestore
.document('foos/{fooId}')
.onWrite((change, context) => {
// do nothing (i.e. returns undefined)
});

export const onFooWrite = functions.firestore
.document('foos/{fooId}')
.onWrite((change, context) => {
return someAsyncFunction(); // returns a promise
});
export const onFooWrite = functions.firestore
.document('foos/{fooId}')
.onWrite((change, context) => {
if (something) return; // returns nothing (i.e. undefined)
return someAsyncFunction(); // returns a promise
});
export const onFooWrite = functions.firestore
.document('foos/{fooId}')
.onWrite(async (change, context) => {
await someAsyncFunction();
// returns nothing AFTER the promise is resolved
});

我相信这些都很好,但Doug Stevenson建议在我们没有返回承诺时返回nullnull有特殊治疗吗?

我发现你当然必须听从Doug的建议,并尝试返回null,这也是事件驱动函数无法完成的原因之一

Node.js中编写的函数返回被拒绝的promise或将非null值传递给回调时。

该函数在默认情况下停止执行,并且该事件被丢弃。

您还需要终止后台函数并返回null值或使用其他promise方法。

如果函数创建后台任务(如线程、期货、Node.js Promise对象、回调或系统进程(,则必须在从函数返回之前终止或以其他方式解决这些任务。在从特定执行返回之前未终止的任何任务都可能无法完成,也可能导致未定义的行为。

相关内容

  • 没有找到相关文章

最新更新