云函数: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
关键字。
我创建了一个云函数来创建一个 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
关键字。