Kev*_*ski 10 javascript node.js firebase google-cloud-functions
您express可以添加中间件,例如app.use(cors())将其添加到所有端点,但是我在 firebase 示例中找不到类似的东西。这是如何在每个函数中应用它的示例(见下文) 。不过,我想在全球范围内应用中间件(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) });
});
Run Code Online (Sandbox Code Playgroud)
Kev*_*ski 14
使用柯里化创建处理程序,您必须在所有函数中重复它,但这比每次都编写中间件更容易:
const applyMiddleware = handler => (req, res) => {
return cors(req, res, () => {
return handler(req, res)
})
}
exports.handler = functions.https.onRequest(applyMiddleware(yourHandler))
Run Code Online (Sandbox Code Playgroud)
编辑,一个更复杂的中间件的示例:
const applyMiddleware = handler => (req, res) => {
return cors(req, res, () => {
return handler(req, res)
})
}
exports.handler = functions.https.onRequest(applyMiddleware(yourHandler))
Run Code Online (Sandbox Code Playgroud)