gpt4 book ai didi

javascript - 将中间件添加到一行/函数中的所有 firebase 函数

转载 作者:行者123 更新时间:2023-12-05 00:36:29 24 4
gpt4 key购买 nike

express您可以添加中间件,例如 app.use(cors())它将它添加到所有端点,但是我在 firebase 示例中找不到类似的东西。 Here is the example (见下文)如何在 中应用它每个功能。但是我想在全局范围内应用中间件(cors 或其他),因为我有很多功能。

import * as cors from 'cors';
const corsHandler = cors({origin: true});

export const exampleFunction= functions.https.onRequest(async (request, response) => {
corsHandler(request, response, () => { return handler(req, res) });
});
app.use() 的等价物是多少?在火力基地?是 adding and express server only option ?

最佳答案

使用柯里化(Currying) 要创建处理程序,您必须在所有函数中重复它,但这比每次都编写中间件要容易:

const applyMiddleware = handler => (req, res) => {
return cors(req, res, () => {
return handler(req, res)
})
}
exports.handler = functions.https.onRequest(applyMiddleware(handler))
编辑,一个更复杂的中间件的例子:
const applyMiddleware =
(handler, { authenticatedRoute = false } = {}) =>
(req, res) => {
if (authenticatedRoute) {
const isAuthorized = isAuthenticated(req)
if (!isAuthorized) {
return res.status(401).send('Unauthorized')
}
}
return cors(req, res, () => {
return handler(req, res)
})
}
exports.handler = functions.https.onRequest(
applyMiddleware(handler, { authenticatedRoute: true })
)

关于javascript - 将中间件添加到一行/函数中的所有 firebase 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66592146/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com