【问题标题】:How to add JOI validator to firebase function?如何将 JOI 验证器添加到 firebase 函数?
【发布时间】:2021-11-27 20:00:17
【问题描述】:

如何将 JOI 验证器作为中间件添加到 firebase 功能?我如下调用firebase函数:

exports.createUserAccount = region("europe-east1").https.onCall(createAccount); // createAccount is an function

在快递的普通端点/路由中,我做这样的事情:

app.post("/app/some/endpoint", auth(), validator(), createAccount());

我的 validator 是一个 Joi 中间件,我在其中检查 req.body 是否像提供的架构一样正确。

附言。我在createAccount 函数中没有(req, res),导致此函数中提供的firebase 返回一个简单的dto。

感谢您的帮助

【问题讨论】:

    标签: javascript typescript firebase google-cloud-platform


    【解决方案1】:

    您可以通过 HTTP 触发函数和 Callable 函数公开 Express 应用,从而在 Firebase 上使用 JOI 中间件。

    onRequestonCall 都接受一个返回 Promise 的函数。从这里开始,您可以创建一个 Express 应用程序,注册您想要的任何中间件,然后将 Express 应用程序传递给 onCall。

    here 大量记录了创建 Express 应用程序的方法。注意 onRequest 和 onCall 有很大的区别:

    • onRequest 公开整个 Express 应用,因此您可以注册路由等,并使用它构建 REST API;
    • onCall 将包装您的 Express 应用程序,因为 SDK 通过 POST 请求调用它。这意味着您只需在 Express 应用上接受一个请求,将其映射到根路径并等待 POST 请求。

    【讨论】:

    • 所以我不能这样使用onCall?
    • 我刚刚查看了函数 SDK 的源代码。事实证明,onCall 函数也是可能的。我要更新我的答案
    • @GregorioPalamà 你能更新 onCAll 的答案吗
    • @rbansal 我已经为 onCall 更新了它。以前,我写过这是不可能的,但后来我检查了一下,结果证明这是可能的,不同之处在于 onCall 包装了整个 Express 应用程序。如果您需要示例,请告诉我
    • @GregorioPalamà 如果你能提供一个例子,那就太好了。我正在尝试了解其工作原理,但无法弄清楚。
    猜你喜欢
    • 2019-02-25
    • 2018-06-25
    • 2017-08-17
    • 1970-01-01
    • 2020-01-03
    • 2021-04-03
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多