我創建了一個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?