Ember数据:反序列化嵌入式模型 [英] Ember-data: deserialize embedded model

查看:123
本文介绍了Ember数据:反序列化嵌入式模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我真的不在这里...



我有以下代码:

  App.Instance = DS.Model.extend({
hash:DS.attr('string'),
users:DS.hasMany('user',{嵌入:'always'})
});

App.User = DS.Model.extend({
name:DS.attr('string'),
color:DS.attr('string'),
lat:DS.attr('number'),
lng:DS.attr('number'),
instance:DS.belongsTo('instance')
});

App.InstanceSerializer = DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin,{
attrs:{
users:{embedded:'always'}
}
});

实例如下:

  var instance = {
hash:68309966ec7fbaac,
id:54b4518fcbe12d5160771ebe,
users:[{
color:#9E463C ,
id:78b662bc56169a96,
lat:36.5299487,
lng:-6.2921774,
name:User 1
},{
color :#9E463C,
id:78b662bc56169a96,
lat:36.5299487,
lng:-6.2921774,
name:User 2
}]
}

但是当我想要 store.push('instance ',实例); ,我收到:


未捕获错误:断言失败:Ember数据期望一个数字或字符串表示用户关系中的记录,而是找到一个对象。如果这是多态关系,请指定一个类型键。如果这是嵌入式关系,请包括 DS.EmbeddedRecordsMixin 并在序列化程序的attrs中指定用户属性


错误在哪里?



从所有这些来源读取,总是使用不同的策略:





非常感谢

解决方案

从这篇文章: http://mozmonkey.com/2013/12/loading-json-with-embedded-records-into-ember-data-1-0-0-beta/ ember想要像你这样加载数据:

  var data = {
instance:{
哈希:68309966ec7fbaac,
id:54b4518fcbe12d5160771ebe,
用户:[78b662bc56169a96,78b662bc56169a97]
},
用户:[{
颜色:#9E463C,
id:78b662bc56169a96,
lat:36.5299487,
lng:-6.2921774,
name:User 1
},{
color:#9E463C,
id:78b662bc56169a96,
lat:36.5299487,
lng:-6.2921774,
name:User 2
}]
}

这里很容易做到:

  for(var i = 0; i< data.users.length; i ++){
store.push('user',data.users [i]);
}
store.push('instance',data.instance);


I really don't get it here...

I have the following code:

App.Instance = DS.Model.extend({
  hash: DS.attr('string'),
  users: DS.hasMany('user', { embedded: 'always' })
});

App.User = DS.Model.extend({
  name: DS.attr('string'),
  color: DS.attr('string'),
  lat: DS.attr('number'),
  lng: DS.attr('number'),
  instance: DS.belongsTo('instance')
});

App.InstanceSerializer = DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
  attrs: {
    users: { embedded: 'always' }
  }
});

And instance like so:

var instance = {
  hash: "68309966ec7fbaac",
  id: "54b4518fcbe12d5160771ebe",
  users: [{
    color: "#9E463C",
    id: "78b662bc56169a96",
    lat: 36.5299487,
    lng: -6.2921774,
    name: "User 1"
  },{
    color: "#9E463C",
    id: "78b662bc56169a96",
    lat: 36.5299487,
    lng: -6.2921774,
    name: "User 2"
  }]
}

But when I want to store.push('instance', instance);, I receive:

Uncaught Error: Assertion Failed: Ember Data expected a number or string to represent the record(s) in the users relationship instead it found an object. If this is a polymorphic relationship please specify a type key. If this is an embedded relationship please include the DS.EmbeddedRecordsMixin and specify the users property in your serializer's attrs

Where is the mistake?

Read from all those sources, which always use a different strategy:

Thanks a lot

解决方案

As from this article: http://mozmonkey.com/2013/12/loading-json-with-embedded-records-into-ember-data-1-0-0-beta/ ember wants to sideload your data like so:

var data = {
  instance: {
    hash: "68309966ec7fbaac",
    id: "54b4518fcbe12d5160771ebe",
    users: ["78b662bc56169a96", "78b662bc56169a97"]
  },
  users: [{
    color: "#9E463C",
    id: "78b662bc56169a96",
    lat: 36.5299487,
    lng: -6.2921774,
    name: "User 1"
  },{
    color: "#9E463C",
    id: "78b662bc56169a96",
    lat: 36.5299487,
    lng: -6.2921774,
    name: "User 2"
  }]
}

Here it is easy to do:

for (var i=0; i < data.users.length; i++) {
  store.push('user', data.users[i]);
}
store.push('instance', data.instance);

这篇关于Ember数据:反序列化嵌入式模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆