gpt4 book ai didi

node.js - nodejs : Access variables in routes

转载 作者:行者123 更新时间:2023-12-03 22:23:45 24 4
gpt4 key购买 nike

这是我的 routes.js 的样子:

module.exports = function (server, db) {

// Deals
const deals = require('./controllers/deals');
server.get('/deals', deals.findAll);
server.get('/deals/:id', deals.findById);
server.post('/deals', deals.add);
server.put('/deals/:id', deals.update);
server.del('/deals/:id', deals.delete);

}

如您所见,这里有 serverdb 变量。但是,我不确定如何将这两个变量传递给 deals.findAll 和其他 REST 方法。

以下是 deals.findAll 方法的外观:
const findAll = (req, res, next) => {
// I need to access db here, so I can use Sequelize.
}

exports.findAll = findAll

我需要 db 的原因是 Sequelize ORM。

最佳答案

您可以使用 Function.prototype.bind() 来执行此操作:

module.exports = function (server, db) {

// Deals
const deals = require('./controllers/deals');
server.get('/deals', deals.findAll.bind(null, server, db));
server.get('/deals/:id', deals.findById.bind(null, server, db));
server.post('/deals', deals.add.bind(null, server, db));
server.put('/deals/:id', deals.update.bind(null, server, db));
server.del('/deals/:id', deals.delete.bind(null, server, db));
}
Function.prototype.bind() 方法将这些参数放在前面,因此您需要将这些函数的参数修改为:
const findAll = (server, db, req, res, next) => {
// server & db is set here
}

关于node.js - nodejs : Access variables in routes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46869390/

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