[英]Firebase Cloud Functions - How to use same return value in multiple .then() methods
我正在嘗試使用 Firebase 雲 Function 執行以下操作,使用 Firebase Admin SDK:
我到目前為止的代碼如下:
exports.createUser = functions.https.onCall((data, context) => {
return admin
.auth()
.createUser({
email: data.email,
password: data.password,
phoneNumber: data.number,
})
.then((user) => {
return admin
.firestore()
.collection("collectionName")
.doc(user.uid)
.set({});
})
.catch((error) => {
console.log("Error creating new user:", error);
});
});
我正在努力解決的是鏈中的下一個.then()
,以返回 JWT 令牌。 我知道實際的 Admin SDK 代碼返回 JWT,但我不確定如何在多個.then()
中訪問新用戶的屬性,同時還返回 promise(我認為這是正確的必要條件function 終止?)
如何添加另一個有權訪問user.uid
的 .then .then()
並確保 function 實例不會過早終止?
您可以簡單地使用一個變量,如下所示:
exports.createUser = functions.https.onCall((data, context) => {
let userObject;
return admin
.auth()
.createUser({
email: data.email,
password: data.password,
phoneNumber: data.number,
})
.then((user) => {
userObject = user
return admin
.firestore()
.collection("collectionName")
.doc(user.uid)
.set({});
})
.then(() => {
const user = userObject;
// Do whathever you want with user
await function(user)
// Don't forget to return data that can be JSON encoded, see the doc: https://firebase.google.com/docs/functions/callable#sending_back_the_result
// In your case the JWT Object I guess
return ...
})
.catch((error) => {
console.log("Error creating new user:", error);
// See the doc: https://firebase.google.com/docs/functions/callable#handle_errors
});
});
如果你使用async/await
就更簡單了:
exports.createUser = functions.https.onCall(async (data, context) => {
const user = await admin
.auth()
.createUser({
email: data.email,
password: data.password,
phoneNumber: data.number,
});
await admin
.firestore()
.collection("collectionName")
.doc(user.uid)
.set({});
// Do whathever you want with user
await function(user)
return ...
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.