繁体   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