云函数:oncall函数在运行promise链之前返回null

时间:2020-11-07 14:30:31

标签: angular firebase firebase-authentication google-cloud-functions angularfire2

我创建了一个云功能来创建Firebase身份验证用户并将用户的数据记录到Firestore中。

云功能

const admin = require('firebase-admin');
admin.initializeApp();

exports.createUser = functions.https.onCall((data, response) => {
  admin.auth().createUser({
    email: data.email,
    password: data.password,
    displayName: data.name
  }).then(user => {
    return admin.firestore().collection('users').doc(user.uid).set({
      email: data.email,
      id: user.uid,
      name: data.name,
      role: data.role
    });
  }).then(() => {
    return { status: true, message: 'User added successfully!' };
  }).catch(error => {
    return { status: false, message: 'Error occurred while creating the user!' };
  })
})

Angular .ts文件

export class AddUserComponent implements OnInit {
  constructor(private angularFireAuth: AngularFireAuth) {}

  ngOnInit(): void {
  }

  onSubmit(user) {
    this.angularFireFunctions.httpsCallable('createUser')(user).subscribe(response => {
      console.log(response);
    }, error => {
      console.log(error);
    });
  }
}

当我使用angular / fire在我的角度应用程序中调用此函数时,它将返回null。另外,最多需要3分钟才能将用户添加到Firestore。我应该在这段代码中修改什么?

1 个答案:

答案 0 :(得分:2)

就像在Firebase文档中发送关于onCall函数here的结果一样,您应该返回任何异步函数。因此,在云功能的return之前添加admin.auth()...关键字。