Javascript Firebase云函数中的初始化代码放置在何处?

Javascript Firebase云函数中的初始化代码放置在何处?,javascript,node.js,firebase,google-cloud-functions,Javascript,Node.js,Firebase,Google Cloud Functions,我们计划使用 中间件来验证我们的api请求 但我看到它有一个用于初始化的异步函数,我想知道在哪里可以使用swagger json文件初始化 如果它对每个请求都执行init,我认为它太重了。那么,有人能分享一下如何实现“一次初始化,永远使用”吗 下面是当前如何使用它的示例。如何加载一次并将其存储在内存中,使其不会每次都进行验证 swaggerValidator.init('test/unit-tests/input-validation/pet-store-swagger.yaml') .then

我们计划使用 中间件来验证我们的api请求

但我看到它有一个用于初始化的异步函数,我想知道在哪里可以使用swagger json文件初始化

如果它对每个请求都执行init,我认为它太重了。那么,有人能分享一下如何实现“一次初始化,永远使用”吗

下面是当前如何使用它的示例。如何加载一次并将其存储在内存中,使其不会每次都进行验证

swaggerValidator.init('test/unit-tests/input-validation/pet-store-swagger.yaml')
.then(function () {
    const app = express();
    app.use(bodyParser.json());
    app.get('/pets', swaggerValidator.validate, function (req, res, next) {
        return res.json({ result: 'OK' });
    });
    app.post('/pets', swaggerValidator.validate, function (req, res, next) {
        return res.json({ result: 'OK' });
    });
    app.get('/pets/:petId', swaggerValidator.validate, function (req, res, next) {
        return res.json({ result: 'OK' });
    });

    app.use(function (err, req, res) {
        if (err instanceof swaggerValidator.InputValidationError) {
            return res.status(400).json({ more_info: JSON.stringify(err.errors) });
        }
    });

   // const server = app.listen(serverPort, function () {});
});

在全局范围内运行代码。因为它是异步的,所以它返回一个承诺,您可以在函数中使用它,以确保它可以随时使用

在全球范围内:

const promise = swaggerValidator.init(...).then(...)
然后,在函数内部:

promise.then(() => {
    // use swaggerValidator
})

您打算如何处理此初始化的结果?您的最终目的地是什么?swaggerValidator接受模式,需要它来验证我的所有请求。例如,如果/pets请求作为请求传入,swagger validator.validate将检查相应的请求规范,并根据swagger规范验证所有查询参数body是否正确。如果不是,则抛出一个错误。基本上是为了验证请求。谢谢你的回答,道格。这不是每次遇到请求都会初始化吗?不,不会。使用调试日志自己验证。每次在新的服务器实例中分配它时,它只在每个函数的全局范围内运行一次?const promise=swaggerValidator.init('swagger-file-path');路由器.get(“/pets”、验证、控制器.get)。。。。异步函数validate(req,res,next){await promise;}否,这是一个实现细节,可能会在任何时候更改。仿真器的行为将来也可能会更改。仿真器根本不会尝试以这种方式复制实际服务。