gpt4 book ai didi

javascript - 如何在 Node.js 网站中组织模型?

转载 作者:太空宇宙 更新时间:2023-11-03 22:37:39 25 4
gpt4 key购买 nike

我刚刚开始尝试使用 node.js 构建网站,在组织项目模型时遇到问题。

我在互联网上找到的所有现实世界的例子都使用 Mongoose。该库允许您以静态方式定义模型。所以你可以这样写:

// models/foo.js
module.exports = require('mongoose').model('Foo', ...);

// app.js
mongoose.connect(...);

// some_controller_1.js
var Foo = require('./models/foo');
Foo.find(...);

// some_controller_2.js
var Foo = require('./models/foo');
Foo.find(...);

但是由于我不想使用 MongoDB,所以我需要另一个 ORM。我发现的所有其他 ORM 都不允许这样做。您首先需要创建一个实例,然后只有您可以注册您的模型。而且他们似乎不允许访问注册模型列表。

所以我尝试这样做:

// models/user.js
var registrations = [];
module.exports = function(sequelize) {
var result = null;
registrations.forEach(function(elem) {
if (elem.db == sequelize)
result = elem.value;
});
if (result) return result;


// data definition
var user = sequelize.define("User", ...);


registrations.push({ db: sequelize, value: user });
return user;
};

我可以这样使用它:

// some_controller_1.js
var Foo = require('./models/foo')(app.get('database'));
Foo.find(...); // using Foo

但是我必须在每个模型文件上编写这些小页眉和页脚有点烦人,并且直接违反了“不要重复自己”的原则。另外,虽然不是一个大问题,但这是一种内存泄漏,因为“sequelize”对象永远不会被释放。

有没有更好的方法,我没有想到?

最佳答案

您可以在这里找到一篇有关使用sequelize处理模型的文章:http://sequelizejs.com/articles/express#the-application

您基本上只需创建一个 models/index.js ,如下所述:http://sequelizejs.com/articles/express#block-3-line-0

之后,您只需将模型定义放入模型文件夹中的文件中,如下所示:http://sequelizejs.com/articles/express#block-4-line-0

关于javascript - 如何在 Node.js 网站中组织模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23341450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com