簡體   English   中英

如何與Ember.js和ember-data創建has_and_belongs_to_many關系?

[英]How to create has_and_belongs_to_many relationship with Ember.js & ember-data?

是否可以與Ember.js和ember-data創建hasAndBelongsToMany關系?

編輯:添加ActiveRecord模型示例以澄清。

class Project < ActiveRecord::Base
  has_and_belongs_to_many :tags
end

class Tag < ActiveRecord::Base
  has_and_belongs_to_many :projects
end

我有一個關聯表“projects_tags”鏈接project_id <=> tag_id。

在這個例子中,我建議在Post中嵌入標簽,以便生成的結構如下所示

{
   title: "some post",
   tags: [ "tag1", "tag2" ]
}

當您不需要對關系有額外的價值時,這通常是一種很好的做法。 如果您想在客戶端上使用Tag模型,您仍然可以通過嵌入來實現。

{
   title: "some post",
   tags: [ { name: "first tag" }, { name: "second tag" } ]
}

在這種情況下,您可以將其指定為嵌入式關系,例如

App.Post = DS.Model.extend({
  title: DS.attr("string"),
  tags: DS.hasMany("App.Tag")
});

App.Tag = DS.Model.extend({
  name: DS.attr("string"),
  post: DS.belongsTo("App.Post")
});

App.store.adapter.serializer.map("App.Tag", {
  tags: { embedded: 'load' }
});

請記住,嵌入僅適用於Ember Data修訂版10.在5-9中不支持。

大多數情況下,您並不希望以與在關系數據庫中對其進行建模相同的方式對所有內容進行建模。

你應該傾向於NoSQL-ish JSON,這通常意味着嵌入東西,而不是復雜的關聯。 這樣做的原因是您的數據庫可以非常有效地JOIN數據,尤其是索引,但通過網絡執行此操作是一個壞主意,因為它會導致大量請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM