2014-06-10 189 views
1

考慮下面的代碼,其中「團隊」是貓鼬模型。有沒有辦法避免使用Mongoose進行硬編碼?

var Team = mongoose.model('Team'); 
Team.find({'GroupName':gname}, function (err, teams) { 
    // Some code 
} 

如何在mongo中選擇硬編碼'GroupName':gname時去掉這個硬編碼?

+0

什麼硬編碼?你意識到參數只是一個JavaScript對象嗎?這裏不太清楚你在問什麼,因爲這不是避免硬編碼的最好例子。 –

+0

假設我有一個名爲'Team.js'的文件,我在其中定義了一個貓鼬模型。現在,我有另一個文件'other.js',我想從mongo db中獲取一個Team文檔。 解決方案A: 現在,如果我在'other.js'文件中提到模型的'GroupName'屬性,那麼看起來我正在增加耦合。 解決方案B: 我將所有獲取和更新代碼移動到模型本身或DAO文件中。 每次我需要選擇或更新時,在'GroupName'中輸入都不正確。 –

回答

2

一種方法是在你的模型,揭露封裝這些類的細節DAO接口定義static methods

Team.js

teamSchema.statics.findByGroupName = function (gname, cb) { 
    this.find({ GroupName: gname }, cb); 
}; 
... 

Other.js

Team.findByGroupName(gname, function (err, teams) { 
    // Some code 
}); 
+0

嗨約翰尼,我個人也贊成採用相同的方法。感謝您的答覆。 –

+0

您可能還想通過[hibernate元模型](https://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/metamodel.html)。這似乎是一個優雅的解決方案。 –

相關問題