Javascript Ember data 1.0 beta版如何映射嵌入式数据
在1.0测试版之前,余烬数据似乎有很多变化。所有这些在0.13版本中都非常有效。现在我想更新到更高的版本。在我的例子中,我们有一个嵌入式模型“用户”Javascript Ember data 1.0 beta版如何映射嵌入式数据,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,在1.0测试版之前,余烬数据似乎有很多变化。所有这些在0.13版本中都非常有效。现在我想更新到更高的版本。在我的例子中,我们有一个嵌入式模型“用户” App.Post = DS.Model.extend({ subject: DS.attr('string'), created: DS.attr('number'), fcreated: function(){ debugger;
App.Post = DS.Model.extend({
subject: DS.attr('string'),
created: DS.attr('number'),
fcreated: function(){
debugger;
var d = new Date(this.get('created'));
return d.toLocaleDateString();
}.property('created'),
reporter: DS.belongsTo('user')
}
App.ApplicationAdapter = DS.RESTAdapter.extend({
namespace: 'restws'
});
来自服务器的Json如下所示
{
"posts": [
{
"id": "5226f2670364e70ae7d77266",
"subject": "Text",
"created": 1325410935048,
"reporter": {
"id": "5226f2660364e70ae7d771e2",
"firstName": "Doris",
"lastName": "Baumertr"
}
}
我得到以下错误代码“UncaughtTypeError:无法调用未定义的”方法“toString”。在我看到的ember源代码中,在ember-data.js第2236行中,函数抛出错误“buildRecord:function(type,id,data)…”调试后,我看到属性类型为undefined,id设置为正确的id,数据为undefined
错在哪里?如何映射嵌入式数据?对嵌入式记录的支持已经消失(目前) 通过实现
extractSingle
并重新组织JSON负载,您可以自己处理嵌入式记录
有关转换的更多信息,请阅读此处:
希望能有所帮助。对嵌入式记录的支持已经消失(目前) 通过实现
extractSingle
并重新组织JSON负载,您可以自己处理嵌入式记录
有关转换的更多信息,请阅读此处:
希望能有所帮助。这里是您需要实现的具体方法
App.PostSerializer = DS.RESTSerializer.extend({
extractSingle: function(store, type, payload, id, requestType) {
if(typeof payload.post.reporter !== "undefined") {
var reporter_id = payload.post.reporter.id;
payload.users = [payload.post.reporter];
payload.post.reporter = reporter_id;
}
return this._super.apply(this, arguments);
}
});
这是一个jsbin
注意,我必须在RESTAdapter中重新定义ajax方法,以模拟返回JSON的服务器
另外,如果您是JSON中的侧加载用户,那么您必须更新此方法,以便它不会覆盖负载中的侧加载用户(payload.users属性)这里实际上是您需要实现的单一方法
App.PostSerializer = DS.RESTSerializer.extend({
extractSingle: function(store, type, payload, id, requestType) {
if(typeof payload.post.reporter !== "undefined") {
var reporter_id = payload.post.reporter.id;
payload.users = [payload.post.reporter];
payload.post.reporter = reporter_id;
}
return this._super.apply(this, arguments);
}
});
这是一个jsbin
注意,我必须在RESTAdapter中重新定义ajax方法,以模拟返回JSON的服务器
另外,如果您是JSON中的侧加载用户,则必须更新此方法,以便它不会覆盖负载中的侧加载用户(payload.users属性)谢谢您的回答,但它不起作用。PostSerializer的函数'extractSingle'不会调用吗?怎么了?JSBin上没有样本吗?是的,这里也一样。不适合我。在DS.ActiveModelSerializerTanks中没有调用extractSingle以获取答案,但它不起作用。PostSerializer的函数'extractSingle'不会调用吗?怎么了?JSBin上没有样本吗?是的,这里也一样。不适合我。DS.ActiveModelSerializer中未调用extractSingle