【发布时间】:2015-11-01 17:57:45
【问题描述】:
我正在尝试使用 Express 和 Sequelize 构建一个基本的数据库架构。我在单独的文件中定义所有模型。我有一个文件 (models/index.js),在其中创建 Sequelize 类的实例、导入模型并建立模型之间的关系。我还有多个控制器,每个控制器都需要访问从models/index.js 导出的模型。
这是导入模型的文件:
// models/index.js
var Sequelize = require('sequelize');
var sequelize = new Sequelize('myApp', 'username', 'password');
var User = sequelize.import('./users');
var Contact = sequelize.import('./contacts');
var Conversation = sequelize.import('./conversations');
var Medium = sequelize.import('./mediums');
User.hasMany(Contact);
Contact.belongsTo(User);
Contact.hasMany(Conversation);
Conversation.belongsTo(Contact);
Medium.hasMany(Conversation);
Conversation.belongsTo(Medium);
module.exports.Sequelize = Sequelize;
module.exports.sequelize = sequelize;
module.exports.User = User;
module.exports.Contact = Contact;
module.exports.Conversation = Conversation;
module.exports.Medium = Medium;
这是需要访问模型的控制器之一。
// controllers/users.js
var models = require('../models');
module.exports.addUser = function () {
};
module.exports.getUser = function () {
};
这是另一个需要访问模型的控制器。
// controllers/contacts.js
var models = require('../models');
module.exports.addContact = function () {
};
module.exports.getContact = function () {
};
module.exports.getAllContacts = function () {
};
我担心两个控制器都需要models/index.js 文件这一事实。每次需要models/index.js 文件时,都会创建一个新的 Sequelize 类实例,从而建立与数据库的新连接。有没有人有任何建议来避免 Sequelize 类的多个实例?
提前致谢!
【问题讨论】:
-
你可能想看看here
标签: node.js express sequelize.js