[英]Firebase 9 cloud function not returning data to reactjs app
如果之前有人问过这个问题,我深表歉意,但我发现的所有内容都是从 2018/2019 年开始的,似乎对我的问题没有帮助。 我将 Firebase 9 与 Reactjs 应用程序一起使用,并尝试使用云函数从 httpsCallable function 中的 generatePasswordResetLink 检索链接。云 Function 工作正常,记录所有正确的值,并返回简单的字符串,就像我的电子邮件一样发送数据值,但由于某种原因它不会发回链接,因此我可以将其包含在我将从应用程序发送的 email 中。
我的反应 function 代码:
const funcUpdPassword = async () => {
const sendEmail = user['email'];
const authEmail = user['username'] + '@' + office['domain'];
const updPassword = httpsCallable(functions, 'updPassword');
await updPassword({
dest: sendEmail,
auth: authEmail,
}).then((result) => {
console.log('result data:', result.data);
const data: any = result.data;
console.log('data:', data);
});
};
我的 firebase function 代码:
exports.updPassword = functions.https.onCall(async (data, context) => {
const dest = data.dest;
const auth = data.auth;
await admin.auth()
.generatePasswordResetLink(auth)
.then((link) => {
console.log('link:', link.toString());
console.log(`Hello ${dest}`);
return {
text: `Hello ${dest}`,
link: link.toString(),
};
});
});
我已经尝试过使用和不使用这两个函数的异步/等待,并且在 firebase function 日志中没有出现任何错误,但仍然无法获得要发回的链接。 有人可以告诉我为什么以及如何解决这个讨厌的小麻烦吗? 谢谢!
您没有从 Cloud Function 中的顶级代码返回任何内容。
一般来说,你不应该在你的代码中混用then
和await
,因为它很快就会导致这样的错误。
一个简单的解决方法是摆脱await
并使用return
:
exports.updPassword = functions.https.onCall((data, context) => {
const dest = data.dest;
const auth = data.auth;
// 👇
return admin.auth()
.generatePasswordResetLink(auth)
.then((link) => {
return {
text: `Hello ${dest}`,
link: link.toString(),
};
});
});
或者你可以摆脱then
:
exports.updPassword = functions.https.onCall(async (data, context) => {
const dest = data.dest;
const auth = data.auth;
const link = await admin.auth().generatePasswordResetLink(auth);
return {
text: `Hello ${dest}`,
link: link.toString(),
};
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.