我创建了一个Express.js应用程序,我在其中使用MVC模式和Mongoose将文档映射到MongoDB数据库。我已经为模型创建了一个文件夹,我想从(JavaScript的版本)抽象类派生所有的东西来获得更好的代码组织。使用Mongoose&Express.js的MVC OOP
我很困惑最好的办法是组织抽象类,并设置每个模型实例应该是的默认值。例如,一个方法是使用猫鼬架构进行抽象类,然后用猫鼬车型为模型本身:
Feline.js:
var mongoose = require('mongoose');
var Feline = mongoose.Schema({
size: 'Number'
});
Feline.methods.getSize = function() {
return this.size;
}
module.exports = Feline;
HouseCat.js:
var mongoose = require('mongoose')
, FelineSchema = require('./Feline.js');
var HouseCatModel = mongoose.model('HouseCat', FelineSchema)
, HouseCat = new HouseCatModel({
size: 1 //Domesticated cats are small
});
module.exports = HouseCat;
这个设计有几个问题。首先,我认为必须有一种更好的方法来为每个模型设置特定的属性,而不必在每次客户端想要创建模型类型的新实例时都实例化一个新的模型对象。另一方面,使用这种方案,必须在每个模型文件中都使用Mongoose,并且该代码是为使用猫鼬而定制的,这意味着如果我们将来要做到这一点,将很难切换到另一个ODM。
有没有更好的编码方式?是否有任何设计模式很容易在Node中实现,以便于更改ODM?