2016-12-13 5 views
0

を返さない、それはルートが正しくJSONを返すことだ問題で、しかし、私がフロントエンド(Ember)でそれをキャッチしようとすると、nullのように戻ってきます。エンバー+マングースは、燃えさしおよびモデルとまあ、私は問題を抱えている、レコード

私は、次のいた私のエンバールートで:

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 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 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だことを示しています

と私は、次のいたAPIで:それはこの出来事だ理由

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); 
    } 
    }); 
}; 

誰もが、それは感謝だ任意の助けを知っています。

答えて

0

findRecord(モデル名、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); 
    } 
}); 

をあなたのルートを変更し

必要なデータを見つけます。レコードがすでにストアに存在する場合は、返された約束が解決されたときのリロード動作によって異なります。

+0

それはのOKに見えますが、それぞれの約束は質問データに付属しているので、関数 'findRecord'は、特定のモデル、それは私が約束の配列を返すんだ、と私はそれらのすべてを取得する必要があるということだ事で一つのレコードを取得します内部。 –

+1

よく 'query'を使うかもしれません。このメソッドは、クエリをアダプタに委譲します。これは、アダプタレベルのセマンティクスがアプリケーションに公開されている1つの場所です。例:store.query( 'person'、{ids:[1、2、3]}); – Majid

関連する問題