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 }, });