考慮下面的代碼,其中「團隊」是貓鼬模型。有沒有辦法避免使用Mongoose進行硬編碼?
var Team = mongoose.model('Team');
Team.find({'GroupName':gname}, function (err, teams) {
// Some code
}
如何在mongo中選擇硬編碼'GroupName':gname時去掉這個硬編碼?
考慮下面的代碼,其中「團隊」是貓鼬模型。有沒有辦法避免使用Mongoose進行硬編碼?
var Team = mongoose.model('Team');
Team.find({'GroupName':gname}, function (err, teams) {
// Some code
}
如何在mongo中選擇硬編碼'GroupName':gname時去掉這個硬編碼?
一種方法是在你的模型,揭露封裝這些類的細節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
});
嗨約翰尼,我個人也贊成採用相同的方法。感謝您的答覆。 –
您可能還想通過[hibernate元模型](https://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/metamodel.html)。這似乎是一個優雅的解決方案。 –
什麼硬編碼?你意識到參數只是一個JavaScript對象嗎?這裏不太清楚你在問什麼,因爲這不是避免硬編碼的最好例子。 –
假設我有一個名爲'Team.js'的文件,我在其中定義了一個貓鼬模型。現在,我有另一個文件'other.js',我想從mongo db中獲取一個Team文檔。 解決方案A: 現在,如果我在'other.js'文件中提到模型的'GroupName'屬性,那麼看起來我正在增加耦合。 解決方案B: 我將所有獲取和更新代碼移動到模型本身或DAO文件中。 每次我需要選擇或更新時,在'GroupName'中輸入都不正確。 –