2016-12-13 4 views
0

글쎄, Ember와 모델에 문제가 있습니다. Express를 사용하여 Mongoose API에서 JSON을 반환하고자하기 때문에 경로가 json을 올바르게 반환한다는 것이므로, 하지만 프론트 엔드 (Ember)에서 그것을 잡으려고 할 때 null과 같이 돌아오고 있습니다. 내 엠버 경로에서Ember + Mongoose가 레코드를 반환하지 않습니다.

나는 한 다음

import Ember from 'ember'; 
import config from './config/environment'; 

const Router = Ember.Router.extend({ 
    location: config.locationType, 
    rootURL: config.rootURL 
}); 

Router.map(function() { 
this.route('examGroupQuestion',function() { 
    this.route('showQ',{ 
    path: 'showQ/:questionsGroup_id' 
    }); 
}); 
}); 
export default Router; 

그리고 마지막으로이 내입니다 :

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model: function(params){ //i'm getting params from the url as a paremeter 
    return Ember.RSVP.hash({ 

     questions: this.store.find('examGroupQuestion/show-q', params.questionsGroup_id) 
    }); 
    } 
}); 

그것은이 경로는 아이가, 또 다른 하나의하는 것이 중요합니다 다음에 나는 당신에게 라우터를 보여 모델 :

import Model from 'ember-data/model'; 
import attr from 'ember-data/attr'; 

export default Model.extend({ 
/* the atributte array it's defined in a transform */ 
    description: attr('string'), 
    matrix_eval: attr('array'), 
    level: attr('string'), 
    rows: attr('array'), 
    randomize_row: attr('boolean'), 
    columns: attr('array'), 
    randomize_col: attr('boolean'), 
}); 

글쎄, 우리는 json을 경로 모델에서 템플릿으로 전달하려고합니다.

router.route('/examGroupQuestion/showQs/:qid').get(function(req,res){ questions_group.getQuestions(req,res, req.params.qid); }); 
:이 경로를했다 REST 서버에서

This is the error that Ember returns

:하지만 기록은 항상 우리가 REST 서버 응답 및 오류를 볼 수 있습니다 다음 이미지에서와 같이 널 (null)입니다 것을 보여 그것은이 일어나는 이유

module.exports.getQuestions = function(req,res,id){ 
    QuestionGroup.findById(id).exec(function(err, questiongroup){ 
    if(err) 
    { 
     res.send(err); 
    } 

    function done(result){ 
     res.json({questionsGroup:result}); 
    } 

    var result = []; 
    var l = questiongroup.questions.length; 
    for(var j = 0; j < l; j++) 
    { 
     (function(j){ 
     Questions.findById(questiongroup.questions[j].id).exec(function(err, questions){ 
      if(err) 
      { 
      res.send(err); 
      } 
      result.push(questions); 
      if(l === j+1) 
      { 
      done(result); 
      } 
     }); 
     })(j); 
    } 
    }); 
}; 

사람이 알고 있나요, 어떤 도움이 감사 것을 :

와는 API에서 나는 다음과 같은했다.

답변

0

findRecord (MODELNAME, ID, 옵션) 약속

이 메소드는 지정된 형태와 ID 조합에 대한 레코드를 반환합니다. findRecord 메서드는 항상 주어진 형식과 ID에 대해 동일한 개체로 약속을 해결합니다. findRecord 메서드는 항상 레코드와 함께 해결 될 약속을 반환합니다. 레코드가 아직 사용할 수없는 경우

가게가 어댑터의 find 방법을 물어볼 것, 바로 확인이 'examGroupQuestion/쇼 Q'

정확한 모델인지 확인

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model(params) { 
    return this.store.findRecord('examGroupQuestion/show-q', params.questionsGroup_id); 
    } 
}); 

로 경로를 변경

필요한 데이터를 찾으십시오. 레코드가 상점에이 L있는 경우, 리턴 된 약속이 해결 될 때 다시로드 동작에 따라 다 (니다.

+0

괜찮아 보이지만, 함수'findRecord'는 특정 모델을 가진 레코드 하나를 얻습니다. 약속의 배열을 반환한다는 것이고, 각각의 약속은 질문 데이터와 함께 왔기 때문에 모든 것을 가져와야합니다. 내부. –

+1

잘'query'를 사용할 수 있습니다.이 메소드는 쿼리를 어댑터에 위임합니다. 이것은 어댑터 수준의 의미가 응용 프로그램에 노출되는 한 곳입니다. 예 : store.query ('person', {ids : [1, 2, 3]}); – Majid

관련 문제