Многоуровневая иерархия данных Ember со встроенным всегда

Я могу использовать встроенный всегда для одного уровня, но я не могу использовать его для двухуровневой глубокой модели. Нужна срочная помощь

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")

Я получаю журнал для comment.text как blabla, но не могу заставить работать вторую часть. Я использую версию 11 хранилища данных Ember. Любой с похожей проблемой/решением.

Интересно, что мы попробовали hasMany, поэтому Post -hasMany-> Comment, Comment -hasOne-> Ferment. Это отлично работает, вот код.

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")

person sudhanshu    schedule 15.02.2013    source источник
comment
Думаю, мне нужно написать сопоставления боковой загрузки, может ли кто-нибудь помочь мне написать это.   -  person sudhanshu    schedule 15.02.2013
comment
Кто-то ответ был бы большим.!!! Невозможно передать аргументы в качестве параметров преобразованиям JSON, почти застрял, единственный выход - написать сопоставитель.   -  person sudhanshu    schedule 18.02.2013


Ответы (1)


В ember-rails еще осталось несколько исправлений ошибок: Мы пострадали из-за функции

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 пропускает извлечение внедренных объектов. Неправильный тут:

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;
}

}

person sudhanshu    schedule 18.02.2013