【问题标题】:Is there a way to avoid hard coding with Mongoose?有没有办法避免使用 Mongoose 进行硬编码?
【发布时间】:2014-06-10 05:53:39
【问题描述】:

考虑以下代码,其中“团队”是一个猫鼬模型。

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

如何摆脱这种在 mongo 中选择时硬编码 'GroupName':gname 的硬编码?

【问题讨论】:

  • 什么硬编码?你意识到参数只是一个 JavaScript 对象,不是吗?不清楚您在这里要问什么,因为这不是避免硬编码的最佳示例。
  • 假设,我有一个名为“Team.js”的文件,我在其中定义了一个猫鼬模型。现在,我有另一个文件“other.js”,我想从 mongo db 获取团队文档。解决方案A:现在,如果我在“other.js”文件中提到模型的“GroupName”属性,那么似乎我正在增加耦合。解决方案 B:我将所有获取和更新代码移动到模型本身或类似 DAO 的文件中。每次我需要选择或更新时都输入“GroupName”感觉不对。

标签: node.js mongodb mongoose hardcode


【解决方案1】:

一种方法是在您的模型上定义 static methods,以公开封装这些细节的 DAO 接口:

Team.js

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

Other.js

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

【讨论】:

  • 嗨,约翰尼,我个人也赞成同样的方法。感谢您的回复。
  • 您可能还想通过hibernate meta models。这似乎是一个优雅的解决方案。
猜你喜欢
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
相关资源
最近更新 更多