2014-02-07 2 views
2

Epic에 많은 작업이있는 MEAN을 사용하여 모델 연결을 설정하려고합니다. 에픽을 먼저 만들고 작업을 만들 때 연결합니다. 나는 현재 에픽의 ID로 모든 작업 쿼리하기 위해 노력하고있어 내 공개 EPICS 컨트롤러에서평균 스택을 사용하여 관련 모델 쿼리

task: 
    { name: 'my first task', 
    epic: 
     { name: 'My fist epic', 
     _id: 52f511c605456ba4c936180d, 
     __v: 0}, 
    _id: 52f511d605456ba4c936180e, 
    __v: 0 } } 

하지만 난 많은 행운을 가지고 있지 않다 해요 : 작업 데이터 모델은 에픽 관련하여 다음과 같습니다 . 아래 쿼리는 내 Epic과 관련된 작업 대신 모든 작업을 반환합니다.

Tasks.query({“epic._id": $routeParams.epicId}, function(tasks) { 
    $scope.tasks = tasks; 
}); 

평균을 사용하여 연결 및 검색하는 더 좋은 방법이 있습니까? 나는 멍청한 사람이야. 미리 감사드립니다.

편집 : 새로운 작업이 생성되면 서사시를 업데이트하는 아이디어를 가지고 놀았습니다. app/controllers/tasks.js에서 작동하지 않는이 코드가 있습니다.

exports.create = function (req, res) { 
    var task = new Task(req.body) 
    Epic.find(req.body.epic.id, function (err, epic) { 
    if (err) return next(err) 
    epic.tasks.push(task.id); 
    epic.save(); 
    }) 
    task.save() 
    res.jsonp(task) 
} 

답변

0

xhr을 (를) 디버깅하는 데 도움이 필요해 보입니다. 단계를 추적 해 봅시다 :

  • 요청을 서버에 보내고 있습니까?
  • 올바른 고속도로에 도착 했습니까?
  • 서버 측 코드가 Mongo에 대해 올바른 찾기 작업을 수행합니까?
  • 몽고는 올바른 결과를 반환합니까?
  • Mongo의 결과를 응답에 올바르게 쓰고 있습니까?
  • 브라우저의 개발 도구를 사용하여 네트워크 트래픽을 검사하여 클라이언트에서 응답을 볼 수 있습니까?
  • 약속 성공을 올바르게 처리하고 있습니까?

문제가있는 곳을 알려면 자세한 정보와 코드를 게시해야합니다.

1

몽구스도 사용하고 있습니까? 나는 "ref"와 "populate"를 사용할 것이다. 먼저 TaskSchema가 있습니다.

var TaskSchema = new Schema({ ... }); 
mongoose.model('Task', TaskSchema); 

등을 추가하면 다른 스키마에서도 참조됩니다. 1 또는 여러 개의 작업 예제를 추가하겠습니다.

var Schema = new Schema({ 
    task: { 
    type: Schema.ObjectId, 
    ref: 'Task' 
    }, 
    tasks: [ 
    { type: Schema.Types.ObjectId, ref: 'Task'} 
    ] 
}); 

다음으로 채우십시오.

this.findOne({ 
    _id: id 
}).populate('tasks').exec(cb); 
+0

제안 해 주신 Dylan. 나는 몽구스를 사용하고있다. 내 프로젝트에 따라 다른 스키마는 에픽의 부모 스키마가 될 것입니다. 맞습니까? 당신의 제안을 따랐다면 새 작업을 만들 때 서사 모델을 어떻게 업데이트 할 수 있습니까? 당신의 제안에서 당신은 작업이 이미 서사시와 연관되어있는 후에 렌더링에 유용하다고 가정하는 "채우기"방법을 나열합니다. 아마도 서버 측 컨트롤러에서 create 메소드를 통해 부모 서사시를 찾고 업데이트해야 할 수도 있습니다. 생각? –

관련 문제