如何在node.js网站中组织模型?

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

我在互联网上find的所有真实世界的例子都使用了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都不允许这样做。 你首先需要创build一个实例,然后只有你可以注册你的模型。 他们似乎也不允许访问注册模型列表。

所以我试着这样做:

 // 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 

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

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

你可以在这里find一篇关于处理模型的文章: http ://sequelizejs.com/articles/express#the-application

你基本上只是创build一个models/index.js在这里描述: http : //sequelizejs.com/articles/express#block-3-line-0

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