云函数:oncall 函数 returns 在 运行 承诺链之前为 null

Cloud functions: oncall function returns null before running chain of promises

我创建了一个云函数来创建一个 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 应用程序中使用 angular/fire 调用此函数时,它 returns 为空。此外,将用户添加到 Firestore 最多需要 3 分钟。我应该在此代码中修改什么?

如 firebase 文档中关于发送回 onCall 函数的结果 here,您应该 return 任何异步函数。所以,在云函数的admin.auth()...之前添加return关键字。