如何在我的Express应用中的任何地方重用相同的sequelize连接?

时间:2018-12-24 16:56:10

标签: node.js express sequelize.js

这是我的问题,我有一个Express应用,在其中我将控制器(即为每个路由调用的功能)与应用入口分开:

index.js

...
const sequelize = new Sequelize(...);
const PersonController = require('controllers/PersonController');
router.route('/persons').get(PersonController.index)
...

controllers / PersonController.js

...
exports.index = (req, res) => {
  //Return all the lines of the `Persons` table
};
...

但是要访问数据库,我必须有权访问控制器中的sequelize实例。我该怎么办?

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

有很多方法...

我的最爱:您可以将自己的constroller创建为一个类...

这是一种代码,(不是最好的,但是正在运行)

控制器类

class PersonController {
      constructor(sequelize) {
           this.sequelize = sequelize;
      }

      index(req, res){
           const sequelize = sequelize;
           ... your code ...
      }

}

module.exports = PersonController;

之后

const sequelize = new Sequelize(...);
const PersonController = require('controllers/PersonController');

router.route('/persons').get((req, res) => {
     const controller = new PersonController(sequelize);
     controller.index(req, res);
})