如何确保我的.remove
来电已完成?我是否正确使用以下代码?最近我发现这个功能根本没有完成的情况。你能解释异步电话吗?感谢。
exports.UserDelete = functions.auth.user().onDelete(event => {
var uid = event.data.uid;
admin.database().ref("notes/" + uid).remove();
admin.database().ref("users/" + uid).remove();
admin.database().ref("providers/" + uid).remove();
return null;
});
答案 0 :(得分:4)
当所有异步工作完成时,您必须从函数返回一个已解决的promise。了解异步编程的工作原理是critical for using Cloud Functions。对remove()的每次调用都会返回一个promise,因此您需要将它们全部收集到一个数组中并将它们传递给Promise.all(),以获得在完成所有工作后已解决的另一个承诺。
exports.UserDelete = functions.auth.user().onDelete(event => {
const uid = event.data.uid;
const p1 = admin.database().ref("notes/" + uid).remove();
const p2 = admin.database().ref("users/" + uid).remove();
const p3 = admin.database().ref("providers/" + uid).remove();
return Promise.all([p1, p2, p3]);
});
答案 1 :(得分:0)
当你在firebase-function中使用Promise
个任务时,你应该返回async
结帐this
var uid = event.data.uid;
return admin.database().ref("notes/" + uid).remove()
.then(() => admin.database().ref("users/" + uid).remove())
.then(() => admin.database().ref("providers/" + uid).remove())