Ember.js 正确侧面加载数据(使用自定义适配器)-内部JSBIN

Ember.js 正确侧面加载数据(使用自定义适配器)-内部JSBIN,ember.js,ember-data,sideloading,Ember.js,Ember Data,Sideloading,()() 因此,我有以下模型,我想加载我的数据: App.List = DS.Model.extend({ name: DS.attr('string') }); App.User = DS.Model.extend({ username: DS.attr('string'), users: DS.belongsTo('App.List') // is this line correct? }); App.List.reopen({ users: DS.hasMany('

()() 因此,我有以下模型,我想加载我的数据:

App.List = DS.Model.extend({
  name: DS.attr('string')
});

App.User = DS.Model.extend({
  username: DS.attr('string'),
  users: DS.belongsTo('App.List') // is this line correct?
});

App.List.reopen({
    users: DS.hasMany('App.User')
});
我有自己的自定义适配器配置:

DS.SocketAdapter.configure('App.User',
    {sideloadAs: 'users'}
);
我想用以下有效载荷提升我的模型:

{ 
    "list" : {"id" : 1, "name" : "Nome", "users" : [1,2] }, 
    "users": [
                { "id":1, "username": "user1", "users": 1 },
                { "id":2, "username": "user2", "users": 1 }
             ] 
} 
从控制台输入:

obj = ' { "list" : {"id" : 1, "name" : "Nome", "users" : [1,2] }, "users": [{ "id":1, "username": "user1", "users": 1 },{ "id":2, "username":"user2", "users" : 1}] } ';
obj = JSON.parse(obj);
DS.get('defaultStore').load( App.List, obj);

var l_len = App.List.find().get('length');
var u_len = App.User.find().get('length');
console.log( ">>>>>>>  "+ l_len + "record(s) " +u_len + "record(s)");
但似乎没有加载任何数据。我正在从控制台测试此模型。我使用的是第12版的余烬数据。我的代码哪里错了

ps SocketAdapter扩展了RestaAdapter。 我应该在自定义适配器中提升数据吗?如果是,我不知道我的代码放在哪里(如果在
findMany
findAll
重新定义中)。谢谢你的帮助

()

,我无法加载json。我认为这是不正确的

所以我用一种变通方法解决了这个问题:


如果要加载单个记录,可以使用
didFindRecord
而不是
didFindMany
。我希望下一次修订会有所改变。

我想你必须根据
下面的
引用用户中的列表id(
..{id:1,用户名:'user1',list:1}…
),并且在你的有效负载
列表中有一个
用户
集合,但我认为应该是
用户
谢谢你的帮助!这是我的jsbin:。以下是输出:。我收到“无法调用未定义的方法'hasOwnProperty'错误”。不确定您的代码出了什么问题。现在没有时间调查。今晚我可以看一看,这可能真的很新鲜,但值得一提的是:这将帮助所有适配器作者!我是为.NET编写的(这还远远没有完成,它是基于一个现有的适配器,该适配器为Ember提供了一个.NET模板),它确实需要一个自定义序列化程序,这主要是因为or.NET的JSON格式与Ember Data的JSON格式不同。这是定制序列化程序的唯一原因。我可能错了,但是由于您处理的是websocket,您可能只需要扩展适配器,因为它涉及请求和连接以及所有这些。
var obj = { 
    "lists" : [
                 { "id": 1, "name" : "ListOne", "user_ids" : [1,2] },
                 { "id": 2, "name" : "ListTwo", "user_ids" : [3,4] }
              ],
    "users": [
                     { "id": 1, "username": "user1", "list": 1 },
                     { "id": 2, "username": "user2", "list": 1 },
                     { "id": 3, "username": "user3", "list": 2 },
                     { "id": 4, "username": "user4", "list": 2 }
             ]

};

var store = DS.get("defaultStore");
store.load(App.List, obj);

var adapter = store.adapterForType(App.List);
adapter.didFindMany(store, App.List, obj);