Firebase 可调用 + Express?

问题描述 投票:0回答:3

有了

functions.https.onRequest(app);
,就可以立即使用快递了。

我想知道是否可以以同样的方式将

functions.https.onCall(...)
与express一起使用?

onCall(...)
似乎有不同的签名,但也许仍然有一种方法可以在使用
onCall(...)
函数时继续使用express?

firebase google-cloud-functions
3个回答
13
投票

不,这是不可能的。可调用函数强制您的端点使用特定路径、特定类型的输入(通过 POST 的 JSON)和特定类型的输出(也是 JSON)。考虑到可调用对象工作方式的限制,Express 并不能真正帮助您。您可以在文档中阅读所有可调用协议的详细信息。您可以看到,可调用对象抽象出了请求和响应的所有详细信息,而您在使用 Express 时通常会使用这些详细信息。


0
投票

但是,有效的是使用 onRequest 并调用它...然后您可以像平常一样使用express,并在客户端拥有可调用的 firebase 的简单性...

然后您就可以像平常一样进行授权了。例如使用以下中间件:

export const createFirebaseAuth = () => (req: express.Request, res: express.Response, next: express.NextFunction) => {
    console.log('Time: ', Date.now());
    const token = req.header('Authorization');
    if (!token) {
      res.status(400);
      res.send('Authtoken must be sent with a request');
      return;
    }
    admin
      .auth()
      .verifyIdToken(token.replace('Bearer ', ''))
      .then((v) => {
        req.user = v;
        next();
      })
      .catch((error) => {
        res.status(401);
        res.send(error.message);
        res.end();
      });
  }

0
投票

不支持express,但它们可以调用相同的函数... 它们都可以作为 root 存在...并表达为 root 中存在的任何可调用函数(导出)...

因此它们可以共存...它们还可以调用通用功能...例如服务层...

© www.soinside.com 2019 - 2024. All rights reserved.