2014-06-10 2 views
1

다음 코드를 고려하십시오. 여기서 '팀'은 몽구스 모델입니다.몽구스로 하드 코딩을 피할 수있는 방법이 있습니까?

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

어떻게 하드 코드 'GroupName'이 하드 코딩을 제거합니까? mongo에서 선택하는 동안 gname?

+0

하드 코딩이란 무엇입니까? 인수는 JavaScript 객체 일뿐입니다. 하드 코딩을 피하는 가장 좋은 예가 아니므로 여기에서 무엇을 묻고 있는지 명확하지 않습니다. –

+0

mongoose 모델을 정의하는 'Team.js'라는 파일이 있다고 가정합니다. 이제, mongo db에서 팀 문서를 가져오고 싶은 다른 파일 'other.js'가 있습니다. Solution A : 'other.js'파일에서 'GroupName'속성을 언급하면 ​​Coupling이 증가하는 것 같습니다. 솔루션 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

안녕하세요 Johnny, 나도 개인적으로 같은 접근 방식을 선호합니다. 귀하의 회신에 감사드립니다. –

+0

또한 [최대 절전 모드 메타 모델] (https://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/metamodel.html)을 살펴볼 수도 있습니다. 이것은 우아한 해결책처럼 보입니다. –

관련 문제