gpt4 book ai didi

javascript - 谷歌云功能有时有效有时无效

转载 作者:行者123 更新时间:2023-12-02 22:38:20 25 4
gpt4 key购买 nike

我正在使用 Firestore 的 onCreate 函数来检测用户注册并使用其用户 ID 创建文档。问题是该功能有时有效,有时则无效。另外,每当函数运行时,我都会收到“函数返回未定义的预期 promise 或值”错误。我已经尝试了许多针对类似问题给出的解决方案,但仍然没有成功。

export const createNewUser = functions.auth.user().onCreate(user => {
const userId = user.uid;

const updateData = {
ads_watched: 0,
coins: 20000,
gems: 0
};

admin.firestore().doc("cashon/" + userId)
.set(updateData)
.then(writeResult => {
console.log("User Created result:", writeResult);
return null;
})
.catch(err => {
console.log(err);
return null;
});
});

最佳答案

您需要返回 set() 返回的 promise 异步方法,如下:

export const createNewUser = functions.auth.user().onCreate(user => {
const userId = user.uid;

const updateData = {
ads_watched: 0,
coins: 20000,
gems: 0
};

return admin.firestore().doc("cashon/" + userId)
.set(updateData)
.then(() => {
console.log("User Created result:", writeResult);
return null;
})
.catch(err => {
console.log(err);
return null;
});
});

如“函数返回未定义、预期的 Promise 或值”错误所示,您必须在后台触发的云函数中返回 Promise 或值,以向平台指示云函数已完成。由于您没有返回 Promise,因此您会遇到这种不一致的行为:有时 Cloud Function 在写入 Firestore 之前就被平台终止。

我建议您观看 Doug Stevenson ( https://firebase.google.com/docs/functions/video-series/ ) 的 Firebase 视频系列中有关“JavaScript Promises”的 3 个视频,其中解释了这一关键点。

另外,请注意 set()方法返回 Promise<void> .

最后,请注意,如果您不需要 console.log("User Created result:", writeResult); ,您可以执行以下操作:

export const createNewUser = functions.auth.user().onCreate(user => {
const userId = user.uid;

const updateData = {
ads_watched: 0,
coins: 20000,
gems: 0
};

return admin.firestore().doc("cashon/" + userId)
.set(updateData)
.catch(err => {
console.log(err);
return null;
});
});

关于javascript - 谷歌云功能有时有效有时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58670327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com