2017-10-17 11 views
1

EmberJSで書かれた私のアプリケーションのテストを書いています。私はミラージュを使用しています。 、私が作成していEmber Mirageと関係を取得できません

蜃気楼/モデル/ paperwork.js

export default Model.extend({ 
customer: belongsTo('customer'), 
paperwork_products: hasMany('paperwork-product', { inverse: 'paperwork' }), 

蜃気楼/モデル/事務処理-product.js私のシナリオでは

export default Model.extend({ 
paperwork: belongsTo('paperwork', { inverse: 'paperwork_products' }), 
}); 

: は、私は2つの次のモデルを持っていますこのように私の件のデータ:

const paperwork = server.create('paperwork');                     
const paperworkProduct = server.create('paperwork-product', { paperwork });      
paperwork.paperwork_products.add(paperworkProduct); 

マイルート:

export default ApplicationRoute.extend({ 
    model(params) { 
     return this.store.findRecord('paperwork', params.paperwork_id, { include: 'paperwork_products' }),   
    }, 
}); 

問題は、テンプレートにpaperwork_productsにアクセスできないことです。それは未定義です(他の書類属性はここにありますが、関係はありません)。私はすでにルートが宣言されているときに私のmirage/config.jsにデバッガを置こうとしました。私の書類が存在し、彼の「書類作成品」もあります。しかし、私はテンプレート内にpaperwork_productsデータを取得することはできません。 私は何が間違っていますか?私は私の中で何かを変更する必要がありますと思う:

this.get('v1/paperworks/:id'); 

しかし、私は何を知らない... 感謝を事前に!

編集:ここに私の本当のエンバーモデルは以下のとおりです。

モデル/ paperwork.js

export default DS.Model.extend({ 
    customer: DS.belongsTo('customer'), 
    paperwork_products: DS.hasMany('paperwork-product', { async: true }), 
}); 

モデル/事務処理-product.js

export default DS.Model.extend({ 
    paperwork: DS.belongsTo('paperwork'), 
}); 

昨日、私は本当を比較してみました私の背中からのJsonApiレスポンス、そしてミラージュのレスポンスを確認しました。私は関係ハッシュで、私の関係 "paperwork_products"を書類作成製品(ミラージュ付き)に変更しました。したがって、アンダースコアやダッシュを付けたモデルとの関係に問題があります。 config.jsでJSONAPIバックエンドをモックしようとしましたが、うまく動作します。ただ、 "paperwork_products"

ミラージュ応答による "事務処理-製品" に置き換え:

"relationships":{ 
    "customer":{ 
     "data":{ 
      "type":"customers", 
      "id":"1" 
     } 
    }, 
    "paperwork-products":{ 
     "data":[ 
      { 
       "type":"paperwork-products", 
       "id":"1" 
      } 
     ] 
    } 
} 

は次のようになります。hasManyの関係で

"relationships":{ 
    "customer":{ 
     "data":{ 
      "type":"customers", 
      "id":"1" 
     } 
    }, 
    "paperwork_products":{ 
     "data":[ 
      { 
       "type":"paperwork_products", 
       "id":"1" 
      } 
     ] 
    } 
} 

私の他のモデルには、何の問題もありません。

答えて

0

確認するには、同じ関係でEmber Dataモデルをセットアップしていますか?それらがなければ、物事が起こるかもしれない。それは非常にうまく動作します...

もしそうなら、それらのモデルも投稿できますか?

また、FYIとして、Mirage 0.3.0には、Ember Dataモデルを読み込んで対応するMirageモデルを作成する自動同期設定が付属しています。素敵でした...

編集: 私は、あなたのEmber Dataモデルを改造して、ラクダの関係を使用することをお勧めします。あなたは次の操作を行う場合は、次の

モデル/エンバーデータは自動的に

キー適切なJSON-APIにcamelCase形式の関係を変換するように私は、それは問題なく動作するように期待される

export default DS.Model.extend({ 
    customer: DS.belongsTo('customer'), 
    paperworkProducts: DS.hasMany('paperwork-product', { async: true }), 
}); 

paperwork.jsそれはあなたのために働く?

+0

私のメインポストを編集しました。私は他の詳細を加えました。ご回答有難うございます。 – Seybol

関連する問題