다음 코드를 고려하십시오. 여기서 '팀'은 몽구스 모델입니다.몽구스로 하드 코딩을 피할 수있는 방법이 있습니까?
var Team = mongoose.model('Team');
Team.find({'GroupName':gname}, function (err, teams) {
// Some code
}
어떻게 하드 코드 'GroupName'이 하드 코딩을 제거합니까? mongo에서 선택하는 동안 gname?
다음 코드를 고려하십시오. 여기서 '팀'은 몽구스 모델입니다.몽구스로 하드 코딩을 피할 수있는 방법이 있습니까?
var Team = mongoose.model('Team');
Team.find({'GroupName':gname}, function (err, teams) {
// Some code
}
어떻게 하드 코드 'GroupName'이 하드 코딩을 제거합니까? mongo에서 선택하는 동안 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
});
안녕하세요 Johnny, 나도 개인적으로 같은 접근 방식을 선호합니다. 귀하의 회신에 감사드립니다. –
또한 [최대 절전 모드 메타 모델] (https://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/metamodel.html)을 살펴볼 수도 있습니다. 이것은 우아한 해결책처럼 보입니다. –
하드 코딩이란 무엇입니까? 인수는 JavaScript 객체 일뿐입니다. 하드 코딩을 피하는 가장 좋은 예가 아니므로 여기에서 무엇을 묻고 있는지 명확하지 않습니다. –
mongoose 모델을 정의하는 'Team.js'라는 파일이 있다고 가정합니다. 이제, mongo db에서 팀 문서를 가져오고 싶은 다른 파일 'other.js'가 있습니다. Solution A : 'other.js'파일에서 'GroupName'속성을 언급하면 Coupling이 증가하는 것 같습니다. 솔루션 B : 모든 가져 오기 및 업데이트 코드를 모델 자체 또는 DAO 같은 파일로 옮깁니다. 'GroupName'을 선택하거나 업데이트해야 할 때마다 입력하는 것이 좋지 않습니다. –