避免使用Sequelize类的多个实例

编程入门 行业动态 更新时间:2024-10-09 20:27:19

避免使用Sequelize类的<a href=https://www.elefans.com/category/jswz/34/1771377.html style=多个实例"/>

避免使用Sequelize类的多个实例

我正在尝试使用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类的多个实例?

提前感谢!

回答如下:

模块(文件)缓存在节点中:

模块在第一次加载后被缓存。这意味着(除其他事项外)每次对require('foo')的调用都将返回完全相同的对象,如果它可以解析为相同的文件。

多次调用require('foo')可能不会导致模块代码多次执行。这是一个重要功能。使用它,可以返回“部分完成”的对象,从而即使在可能导致循环的情况下,也可以加载传递依赖。

如果要让一个模块多次执行代码,然后导出一个函数,然后调用该函数。

https://nodejs/api/modules.html#modules_caching

这意味着,models/index.js上的代码将只运行一次

更多推荐

避免使用Sequelize类的多个实例

本文发布于:2024-05-07 13:54:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756557.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:多个   实例   Sequelize

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!