简单的firebase auth函数上的未定义错误

时间:2018-06-06 11:42:52

标签: node.js firebase firebase-authentication google-cloud-firestore firebase-admin

奇怪的问题,我有一个由Firebase newUser auth触发的功能 如果用户使用谷歌或Facebook提供商,该功能可以正常工作,但如果它通过电子邮件/密码注册,则该功能会返回未定义的错误。 我在这里失踪了什么?

功能代码:

  exports.newUser = functions.auth.user().onCreate((user) => {
    const docRef = admin.firestore().collection('Users').doc(user.uid)

    return docRef.set({
        email: user.email,
        name: '',
        photo: '',
        signupDate: admin.firestore.FieldValue.serverTimestamp()
      },{merge: true});
  });

2 个答案:

答案 0 :(得分:1)

UserRecord的email属性文档表明它并非始终可用。因此,您应该在代码中检查它。

答案 1 :(得分:0)

user.email字段显示在提供商下方,而不是直接位于用户下的Firebase示例中。

这里应该是什么样子:

var email = user.email; // The email of the user.
if (email == undefined) {
  for (var provider of user.providerData) {
    if (provider.email) {
      email = provider.email;
      break;
    }
  }
}

 return docRef.set({
      email: email,
      name: '',
      photo: '',
      signupDate: admin.firestore.FieldValue.serverTimestamp()
    },{merge: true});
});