簡體   English   中英

如何在異步谷歌雲 function 中調用第二個 function

[英]How to call a second function within async google cloud function

我正在嘗試使用 firebase admin SDK 添加具有特定角色的用戶。 我可以在對新添加的用戶進行身份驗證的地方使用它,但我還需要在我的 firestore 數據庫中創建一個用戶/id 記錄。

這是我的代碼:

exports.createUser = functions.https.onCall(async (data, context) => {
  const user = await admin.auth().createUser({
    email: data.email,
    emailVerified: true,
    password: data.password,
    displayName: data.displayName,
    disabled: false,
  });
  await admin.firestore().collection('users').doc(user.uid).set({
    displayName: user.displayName,
    id: user.uid,
    email: user.email,
    role: 'clientAccess',
    created: fb.firestore.FieldValue.serverTimestamp()
  })
  return { response: user }
});

我可以在哪里放置 return admin.firestore().col... 部分來完成這項工作?

謝謝!

我要建議你問的問題不對。 你手頭的任務是:

  1. 創建用戶帳戶
  2. 將包含該用戶信息的文檔添加到 Firestore
  3. 將用戶 object 發送回調用客戶端。

您根本不需要任務 2 的return 。您只需要步驟 3 的返回。您可以簡單地對每個返回 promise 的函數使用 async/await 以確保它們全部執行並以正確的順序完成在 function 將最終結果返回給客戶端之前。

    const user = await admin.auth().createUser({ ... });
    await admin.firestore().collection('users').doc(user.uid).set({ ... })
    return { response: user }

除非您有一些特殊的錯誤處理,否則您可能也不必擔心 try/catch。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM