Ember数据:反序列化嵌入式模型 [英] Ember-data: deserialize embedded model
问题描述
我有以下代码:
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 atype
key. If this is an embedded relationship please include theDS.EmbeddedRecordsMixin
and specify theusers
property in your serializer's attrs
Where is the mistake?
Read from all those sources, which always use a different strategy:
- http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html
- How to make embedded hasMany relationships work with ember data
- Ember-data Serialize/Deserialize embedded records on 3rd level
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屋!