Ember数据多级层次结构,总是嵌入 [英] Ember data multi level hierarchy with embedded always
问题描述
我能够使用嵌入式总是为一个级别,但我无法使用它为两级深度模型。需要紧急帮助
I am able to use embedded always for one level but I am unable to use it for two level deep model. Need an urgent help
App.Post = DS.Model.extend(
title: DS.attr("string")
comment: DS.belongsTo("App.Comment")
)
App.Comment = DS.Model.extend(
text: DS.attr("string")
ferment: DS.belongsTo("App.Ferment")
)
App.Ferment = DS.Model.extend(
fermenter: DS.attr("string")
)
App.Adapter.map App.Post,
'comment':
embedded: "always"
App.Adapter.map App.Comment,
ferment :
embedded: "always"
# -----------------------------
App.store = App.Store.create(
adapter: App.Adapter.create()
)
# -----------------------------
App.store.adapter.load App.store, App.Post,
id: 12
comment: {text: "blabla", ferment:{fermenter:'abcd'}}
console.log App.Post.find(12).get("comment.text")
console.log App.Post.find(12).get("comment.ferment.fermenter")
我收到log.log作为blabla
的日志但是不能让第二部分工作。
我正在使用修订版11的Ember数据存储。
任何有类似问题/解决方案的人。
I get log for comment.text as blabla But cannot get second part to work. I am using revision 11 of Ember data store. Any one with similar problem/solution.
有趣的是,我们尝试了很多,所以Post -hasMany->评论,评论-hasOne->发酵。这样做很好,这里是代码。
Interestingly we tried hasMany so Post -hasMany-> Comments, Comment -hasOne-> Ferment. This works fine, here is the code.
App.Post = DS.Model.extend(
title: DS.attr("string")
comments: DS.hasMany("App.Comment")
)
App.Comment = DS.Model.extend(
text: DS.attr("string")
ferment: DS.belongsTo("App.Ferment")
)
App.Ferment = DS.Model.extend(
fermi: DS.attr("string")
)
App.Adapter.map App.Post,
comments:
embedded: "always"
App.Adapter.map App.Comment,
ferment:
embedded: "always"
App.store = App.Store.create(
adapter: App.Adapter.create()
)
# App.store.adapter.serializer.configure(App.Comment,
# sideloadAs: 'comments'
# )
App.store.adapter.load App.store, App.Post,
id: 12
comments: [{text: "blabla", ferment:{fermi: "found fermi"}}]
console.log App.Post.find(12).get("comments.firstObject.text")
console.log App.Post.find(12).get("comments.firstObject.ferment.fermi")
推荐答案
还有一些错误修复留在ember-rails:
我们因为功能
There is still some bug fixes left in ember-rails: We suffered because of the function
extractEmbeddedBelongsTo: function(loader, relationship, data, parent, prematerialized) {
var reference = this.extractRecordRepresentation(loader, relationship.type, data, true);
prematerialized[relationship.key] = reference;
// If the embedded record should also be saved back when serializing the parent,
// make sure we set its parent since it will not have an ID.
var embeddedType = this.embeddedType(parent.type, relationship.key);
if (embeddedType === 'always') {
reference.parent = parent;
}
}
属性关系正在跳过嵌入对象的提取。错误的一个在这里:
BelongsTo relation is skipping the extraction of embedded objects. The wrong one is here:
extractEmbeddedBelongsTo: function(loader, relationship, data, parent, prematerialized) {
var reference = loader.sideload(relationship.type, data);
prematerialized[relationship.key] = reference;
// If the embedded record should also be saved back when serializing the parent,
// make sure we set its parent since it will not have an ID.
var embeddedType = this.embeddedType(parent.type, relationship.key);
if (embeddedType === 'always') {
reference.parent = parent;
}
}
这篇关于Ember数据多级层次结构,总是嵌入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!