나는 다음과 같은 Emberjs 데이터 모델이 있습니다Emberjs 데이터 어떻게 hasMany의-데이터를로드하는 데 나중에
App.File = DS.Model.extend({
like: DS.attr('boolean'),
comments: DS.hasMany('App.Comment')
});
App.Comment = DS.Model.extend({
file: DS.belongsTo('App.File'),
comment: DS.attr('string')
});
을 그리고 그것을 미리로드 :
App.store.load(App.File, {id: 1, like: false});
이제
내가 생각이 같은 의견을받을 경우 :
var f = App.store.find(App.File, 1);
var c = f.get("comments");
var c는 빈 EmberArray이며 요청이 서버로 전송됩니다. 그러나 나는 요청을받지 못합니까? 왜, 어떻게해야합니까? 나는 정말로 코멘트를 미리로드하고 싶지 않습니다.
더 나아가, 내가 코멘트를 추가 할 수 있지만 동시에 파일을 변경하는 경우 :
f.get("comments").createRecord({comment: "test"});
f.set("like", true);
App.store.commit();
두 요청이 서버로 전송된다. 하지만 다음 JSON (파일)을 반환하면 :
{ "id": 1, like: true }
첫 번째로 보이는 주석이 다시 사라집니다. 왜? 그리고 내가 뭘해야합니까?
도움 주셔서 감사합니다. 질문의 첫 번째 부분에 대해서는
빠른 답변 감사합니다. 승인. 다른 방법이 없습니까? 이 방법을 사용하면 대부분의 경우 데이터가 필요없는 SQL 쿼리를 사용할 수 있습니다. 서버에 대한 첫 번째 요청은 업데이트 된 파일에 대한 요청이므로 두 번째 문제는 도움이되지 않습니다. 두 번째 요청은 덧글 추가 요청입니다. createRecord 다음에 두 번째 commit-command를 추가하면 작동 할 수도 있습니다. –
findQuery와 함께 사용되는 메커니즘을 선호합니다. comments 속성을 처음 사용할 때 findQuery가 서버로 전달됩니다. –
비슷한 문제가 발생했습니다. findMany 호출에 id를 요구하는 대신 외래 키를 사용하여 findQuery를 통해 반입을 지원하면 좋을 것입니다. 필자는 findQuery를 실행하는 모델에 "getComments"메서드를 추가하기로 결정했습니다. – jhorman