使用参数从角度应用程序调用云功能

时间:2019-08-09 09:27:16

标签: angular firebase google-cloud-functions

我有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 })
  }

这是正确的方法吗,如何运作?还是应该使用参数调用函数?

1 个答案:

答案 0 :(得分:3)

您实际上是在混用HTTP Cloud FunctionsCallable 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 };
  })
});