2014-06-10 192 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)。这似乎是一个优雅的解决方案。 –

相关问题