javascript - Firebase 云函数 - null user.displayName onCreate

标签 javascript firebase firebase-authentication google-cloud-functions

我正在尝试编写一个函数,该函数将在用户创建时发送一封欢迎电子邮件。我跟着 this教程,它说可以访问新创建的用户的displayNameuser.displayName ,尽管它不断返回 null为了我。我意识到发生这种情况的可能原因(如果我在这里错了,请纠正我)是注册和设置用户的 displayName 发生在客户端的两个单独步骤中,因此当 onCreate被触发,user.displayName自然会为空。这是我的客户端代码,供引用:

fb.auth().createUserWithEmailAndPassword(payload.email, payload.password).then(user => {
  return user.user.updateProfile({ displayName: payload.name, });
}).catch(/* ... */);

我正在寻找的是在 user.updateProfile 上触发的云功能。 .我查看了 auth.user().onOperation功能(找到 here ),但是当我尝试将此功能部署到 Firebase 时,我收到错误 Error: Functions did not deploy properly. (有帮助,ikr),我猜这与 onOperation 有关函数为 private (如我错了请纠正我)。

有什么办法可以做我想做的事吗?如果是这样,怎么做?或者,有没有办法设置 displayNamecreateUserWithEmailAndPassword ,这样我就可以继续使用 onCreate功能?

这是我当前的 onCreate代码:
exports.sendWelcomeEmail = functions.auth.user().onCreate(user => {
  console.log('name:', user.displayName);
});

这是我对 onOperation 的尝试功能:
exports.sendWelcomeEmail = functions.auth.user().onOperation(user => {
  console.log('user:', user);
}, 'updateProfile');

最佳答案

如果我在你那里,我不会将 firebase auth 用于用户的个人资料。也许使用 users 的集合是一个更好的主意。 ,您可以在其中访问更新触发器。

通常,我所做的是在有新的身份验证用户时触发,在 users 中创建一个用户收藏。使用这种设计,您可以在每次有人更新其个人资料时触发。

exports.onCreateAuthUser = functions.auth.user().onCreate(user => {
  firestore.collection('users').doc(user.uid).set({
     displayName: user.displayName,
     email: user.email,
     // any other properties 
  })

  //do other stuff
});

exports.onUpdateUser = functions
  .firestore.document('users/{id}')
  .onUpdate((change, context) => {
     // do stuff when user's profile gets updated
}

希望有帮助:)

关于javascript - Firebase 云函数 - null user.displayName onCreate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60446655/

相关文章:

javascript - listRef.listAll() 函数未定义(react-native-firebase)

ios - 将现有 Firebase 身份验证提供商下的用户迁移到另一个提供商

ios 每次都需要 reCAPTCHA 与/firestore auth (Flutter)

javascript - 如何使用 ExtJs 在窗口中显示网格?

javascript - 如何将函数附加到 ng-repeat 的第二个元素

android - 从 firebase 控制台推送总是有默认图标 (Gradle Firebase 11.8.0)

javascript - 当新用户在 javascript 的 firebase 中创建它时自动登录

android - 火力地堡供应商

javascript - 如何防止 Math.sin(Math.PI) 出现舍入误差?

javascript - 循环遍历文本框,使用 id 作为变量?