Sequelize Single Instance – 在Module.exports之后无效

我有这个Sequelize代码连接到我的数据库

var sequelize = new Sequelize('db-name', 'user', 'pwd', { host: 'XXX.XX.XX.XXX', dialect: 'mysql', pool: { max: 50, min: 0, idle: 1000000 }, }); 

我把它包装在下面的模块中

 var express = require('express'); var app = module.exports = express(); var Sequelize = require('sequelize'); module.exports = function (Sequelize, DataTypes) { return new Sequelize('db-name', 'user', 'pwd', { host: 'XXX.XX.XX.XXX', dialect: 'mysql', pool: { max: 50, min: 0, idle: 1000000 }, }); }; 

但是,当我调用下面的代码:

 var sequelize = require('../../Connection.js'); //load model var City = sequelize.import('../../models/City.js'); 

它给了我一个错误 – undefined不是一个函数。当我导入模块时,基本上不能实例化sequelize对象

但是,当我把这些块放在一个页面中时,一切正常

我的核心要求 – 我想要一个单一的连接对象,我的节点应用程序。 我在各种页面上模块化了Express Routes。

你的sequelize模块导出一个函数,返回sequelize。 你必须真的调用这个函数

 var sequelize = require('../../Connection.js')() <-- ; 

记住要在connection.js中caching实例 – 否则每次都会得到一个新的连接。 您也可以直接导出实例:

 module.exports = new Sequelize('db-name', 'user', 'pwd', { host: 'XXX.XX.XX.XXX', dialect: 'mysql', pool: { max: 50, min: 0, idle: 1000000 }, });