우리는 documentation에 따라 구현 한 몽구스의 판별 기능을 가진 상속 된 스키마를 사용하고 있습니다.몽구스 판별 자, 문서 인스턴스화
우리는 REST API를 통해 서로 다른 유형의 문서를 POST
문서로 만들고 공통 컨트롤러 기능으로 논리를 처리하려고합니다. 가정하자
, 우리는 슈퍼 타입 GenericEvent
또는 서브 타입 ClickedLinkEvent
또는 SignedUpEvent
중 하나 일 수있는 문서를 생성하는 REST 방법이 (상기 링크 된 문서의 예를 수행하기 위해). 내가 현재하고 있어요 것은 같은 :
var GenericEventModel = require('GenericEventModel');
var ClickedLinkEventModel = require('ClickedLinkEvent');
var SignedUpEventModel = require('SignedUpEvent');
// REST logic for creating a document of a specific type
module.exports.createEvent = function(req, res, next) {
var modelType = req.params.type; // as provided via REST parameter
var Model = getModel(modelType); // get the appropriate model type
new Model(req.body).save(next);
}
// TODO want to avoid this
function getMongooseModel(type) {
switch (modelType) {
case 'GenericEvent': return GenericEventModel;
case 'ClickedLinkEvent': return ClickedLinkEventModel;
case 'SignedUpEvent': return SignedUpEventModel;
// and many more, needs to be extended, every time a new type is added …
}
}
추가되는 새로운 모델 유형이 아니라 오류가 발생하기 쉬운 것, 그리고 내가 코드에 작업 할 다른 사람을 의심 할 때마다 수동으로 getMongooseModel
기능을 보좌 신부을 갖는 것 단순히 잊어 버려.
그럼, 내 질문 : 모든 알려진 된 하위 스키마를보고 주어진 discriminator 키에 대한 적절한 모델을 줄 수있는 몽구스 API에 기존 함수가 있습니까?
굉장합니다. '몽구스 # 모델 '이 ** 모델을 얻는 데 사용될 수 있다는 것을 몰랐습니다. 이것은 정확히 내가 뭘 찾고있는 것 같습니다! :) 나는 시도하고 돌아올거야! – qqilihq
완벽하게 작동합니다. 다시 한 번 감사드립니다! – qqilihq