[英]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.