在Ember tutorial,介紹了許多一對多的關係爲:我可以在Ember.js的一側建立多對多的關係嗎?
App.Post = DS.Model.extend({
tags: DS.hasMany('App.Tag')
});
App.Tag = DS.Model.extend({
posts: DS.hasMany('App.Post')
});
是否有可能只是把這些DS.hasMany
關係1。比如(讓我知道如果我的代碼是不正確以任何方式):
App.Post = DS.Model.extend({
postid: DS.attr('number'),
content: DS.attr('string'),
tags: DS.hasMany('App.Tag')
});
App.Tag = DS.Model.extend({
tagid: DS.attr('number'),
name: DS.attr('string')
});
所以,可以有一個JSON像這些燈具適配器設置:
App.Tag.FIXTURES = [{
tagid: 1111,
name: 'Ember.js',
}, {
tagid: 2222,
name: 'Javascript'
}];
App.Post.FIXTURES = [{
postid: 3000,
content: 'A JS Question'
tags: [2222]
}, {
postid: 4000,
content: 'An Ember.js Question',
tags: [1111, 2222]
}];
所以基本上很多-TO-許多關係只在父母中建立,這就是爲什麼我沒有在App.Tag
模型中包含posts: DS.hsaMany('App.Post')
。
我做得好嗎?如果是這樣,那麼在兩種模式下我應該什麼時候需要DS.hasMany
? 如果不是,請更正Fixture JSON。
如果適配器的類型有差別,也請您解釋一下怎麼不同(相關question)。
更新:由於intuitivepixel跟我解釋說,關係必須是多到很多,讓我再試試吧:
App.Post = DS.Model.extend({
postid: DS.attr('number'),
content: DS.attr('string'),
tags: DS.hasMany('App.Tag')
});
App.Tag = DS.Model.extend({
tagid: DS.attr('number'),
name: DS.attr('string'),
posts: DS.hasMany('App.Post')
});
燈具適配器設置可能是這樣的,我們的關係是隻在帖子中定義?
App.Tag.FIXTURES = [{
tagid: 1111,
name: 'Ember.js',
}, {
tagid: 2222,
name: 'Javascript'
}];
App.Post.FIXTURES = [{
postid: 3000,
content: 'A JS Question'
tags: [2222]
}, {
postid: 4000,
content: 'An Ember.js Question',
tags: [1111, 2222]
}];
或者它是否必須是這樣的,其中關係是在兩者中定義的。如果是這樣,那麼這些信息是不是多餘的?冗餘是可怕的,但。 :(
App.Tag.FIXTURES = [{
tagid: 1111,
name: 'Ember.js',
posts: [4000]
}, {
tagid: 2222,
name: 'Javascript',
posts: [3000, 4000]
}];
App.Post.FIXTURES = [{
postid: 3000,
content: 'A JS Question'
tags: [2222]
}, {
postid: 4000,
content: 'An Ember.js Question',
tags: [1111, 2222]
}];
你的第二個賽事是正確的。至於冗餘,這是多對多關係的本質 – intuitivepixel
我已經包含了一個顯示多對多工作的小jsbin,看看我的更新答案。 – intuitivepixel
我有同樣的問題。您可以獲得冗餘信息,寫入串行器或擴展燈具適配器。我選擇編寫一個序列化程序來爲我處理冗餘。這可能是你最好的選擇。 – GJK