我有Angular + Firebase应用程序。
在我的Cloud Functions中,我具有下一个功能:
export const getUserByEmail = functions.https.onRequest((request, response) => {
const email = request.body.email
admin.auth().getUserByEmail(email)
.then(user => {
response.send(user)
})
.catch(error => {
response.status(500).send(error)
})
})
在Angular Service中,我想称之为:
getUserByEmail(email) {
const getUserData = this.fireFunction.httpsCallable('getUserByEmail')
return getUserData({ request.body.email: email })
}
这是正确的方法吗,如何运作?还是应该使用参数调用函数?
答案 0 :(得分:3)
您实际上是在混用HTTP Cloud Functions和Callable Cloud Functions。
您的Cloud Function代码对应于HTTP 1(functions.https.onRequest(...)
),但是前端的代码称为可调用的HTTP(const getUserData = this.fireFunction.httpsCallable('getUserByEmail')
)。
您应该采用以下两种方法之一,最有可能将您的Cloud Function调整为Callable之一:
exports.getUserByEmail = functions.https.onCall((data, context) => {
const email = data.email;
return admin.auth().getUserByEmail(email )
.then(userRecord => {
const userData = userRecord.toJSON();
return { userData: userData };
})
});