firebase 使用参数从angular应用程序调用云函数

2cmtqfgy  于 2023-05-07  发布在  Angular
关注(0)|答案(1)|浏览(119)

Angular + Firebase应用程序
在我的云函数中,我有下一个func:

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

这是正确的方式,它是如何工作的?或者我应该如何调用带参数的函数?

mm5n2pyu

mm5n2pyu1#

你实际上是把HTTP Cloud FunctionsCallable Cloud Functions弄混了。
您的Cloud Function代码对应的是HTTP(functions.https.onRequest(...)),但您的前端代码调用的是Callable(const getUserData = this.fireFunction.httpsCallable('getUserByEmail'))。
你应该调整一个或另一个,最有可能的是调整你的云函数到一个可调用的,沿着下面的路线:

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 };
  })
});

相关问题