0

これは私が持っているものです。
2つのモデル: 'ノート'と 'ユーザー'。注釈は、「1人のユーザに多くの音符を返す」という「ユーザ」というフィールドがあります。データはミラージュから取得されます。テンプレート(EmberJS)で関連モデルを使用できません

注モデル:

export default DS.Model.extend({ 
    subject: DS.attr(), 
    message: DS.attr(), 
    user: DS.belongsTo('user'), 
    created_at: DS.attr(), 
    updated_at: DS.attr(), 
}); 

ユーザモデル:

export default DS.Model.extend({ 
    username: DS.attr(), 
    email: DS.attr(), 
    notes: DS.hasMany('note'), 
}); 

ミラージュコード:

let notes = [ 
    { 
     id: 1, 
     type: 'note', 
     attributes: { 
      subject: 'Test 1', 
      message: 'tttttttttttttttttttttttt', 
      user_id: 1, 
      'created-at': '2017-03-10 15:04:22', 
      'updated-at': '2017-03-10 15:04:22', 
     } 
    }, 
    { 
     id: 2, 
     type: 'note', 
     attributes: { 
      subject: 'Test 2', 
      message: 'klakljadlfkjhasdflij', 
      user_id: 1, 
      'created-at': '2017-02-10 15:04:22', 
      'updated-at': '2017-02-10 15:04:22', 
     } 
    } 
]; 

let users = [ 
    { 
     id: 1, 
     type: 'user', 
     attributes: { 
      username: 'user', 
      email: '[email protected]', 
     } 
    } 
]; 

this.get('/notes/:id', function (db, request) { 
    let note = notes.find((note) => parseInt(request.params.id) === note.id); 
    let result = { 
     data: note 
    }; 
    if (request.queryParams.include === 'user') { 
     result.included = [users.find((user) => parseInt(note.attributes.user_id) === user.id)]; 
    } 
    return result; 
}); 

(IはEmberInspectorで見ることができるように)ユーザモデルが検索されます。
テンプレート内に{{model.user.username}}を使用すると、空の出力があります。
{{log model.user}}を使用すると空の 'ユーザー'モデルがあります。

私はノートのリストを作成しているときに 'Note'モデルが少し早く 'User'モデルなしで取得されているという事実に関連していると思います。

大変お世話になりました!

+0

どのシリアライザを使用していますか? – Lux

+0

@Lux、JSONAPISerializer – Viktor

+0

重要かどうかわかりませんが、開発の次のステップの1つとしてRESTSerializerを試してみましょう – Viktor

答えて

1

あなたの問題は、JSONAPISerializerを使用していますが、あなたの応答はJSONAPIに準拠していないということです。

{ 
    data: { 
     id: 1, 
     type: 'note', 
     attributes: { 
      subject: 'Test 1', 
      message: 'tttttttttttttttttttttttt', 
      'created-at': '2017-03-10 15:04:22', 
      'updated-at': '2017-03-10 15:04:22', 
     }, 
     relationships: { 
      user: { 
       data: { 
        type: 'user' 
        id: '1' 
       } 
      } 
     } 
    } 
} 

をし、彼id1userをロード:JSONAPIはこれを期待します。

しかし、あなたの応答はこれです:

{ 
    data: { 
     id: 1, 
     type: 'note', 
     attributes: { 
      subject: 'Test 1', 
      message: 'tttttttttttttttttttttttt', 
      user_id: 1, 
      'created-at': '2017-03-10 15:04:22', 
      'updated-at': '2017-03-10 15:04:22', 
     } 
    } 
} 

のでember-dataは、このノートには、ユーザーを持っていないと考えています。必要な応答を理解するためにJSONAPIを読んでください。

関連する問題