2013-05-03 2 views
2

JSON 객체에서 테이블을 채우는 방법을 알아 내려고하고 있습니다. 내 JSON은 structurated 객체입니다store.loadMany() 함수의 올바른 사용법

{ 
id: 0, 
list: [{ username:'user_1',online:true, user:0 }, 
{ username:'user_2',online:true, user:0 }] 
} 
내 모델은 다음과 같이 정의된다

:

MyTalk.WUser = DS.Model.extend({ 
list: DS.hasMany('MyTalk.User') 
}); 

MyTalk.User = DS.Model.extend({ 
username: DS.attr('string'), // primary key 
online: DS.attr('boolean'), 
user: DS.belongsTo('MyTalk.WUser') 
}); 

내가 엠버 데이터에 대한 사용자 지정 어댑터를 사용하고 있습니다 :

DS.SocketAdapter = DS.RESTAdapter.extend(MyTalk.WebSocketConnection, { 
// code not relevant 
} 

DS.SocketAdapter.map('MyTalk.WUser', { 
list: {embedded: 'always'} 
}); 

DS.SocketAdapter.map('MyTalk.User', { 
primaryKey: 'username' 
}); 
MyTalk.Store = DS.Store.extend({ 
revision: 12, 
adapter: DS.SocketAdapter.create({}) 
}); 

이제 데이터를로드합니다. 나는 크롬 명령 줄에서 다음 문 실행

var store = DS.get('defaultStore'); 

var obj = { 
id: 0, 
list: [{ username:'user_1',online:true, user:0 }, 
{ username:'user_2',online:true, user:0 }] 
}; 

var store.loadMany(MyTalk.WUser,obj); 

var record = MyTalk.WUser.find(0); 
record.serialize(); 

을하지만 어떤 기록도 반환 : 사전에

> Object {list: Array[0]} 

감사합니다!

답변

1

어댑터가 포함 된 레코드를 deserialize 할 수 있도록하려면 (또는 해당 문제에 대해 사용자 지정 deserialization을 수행하십시오.) 저장소에 직접로드하지 말고 어댑터를 통해 데이터를로드해야합니다.

var store = DS.get('defaultStore'), 
    obj = { 
     id: 0, 
     list: [{ username:'user_1', online:true, user:0 }, 
      { username:'user_2', online:true, user:0 }] 
    }, 
    type = MyTalk.WUser, 
    adapter = store.adapterForType(type); 

adapter.load(store, type, obj); 
+0

"loadMany"와 비슷한 방법이 있습니까? – Intentss