Looking up values on a belongsTo relationship

I have a system where I want users to add flags (hashtags) to items. Here's my models:

Social.Item = DS.Model.extend({
  source: DS.belongsTo ('source'),
  url: DS.attr (),
  post_timestamp: DS.attr(),
  summary: DS.attr(),
  item_flags: DS.hasMany('item_flag', {async: true})
});
Social.Flag = DS.Model.extend({
  kind: DS.attr(),
  name: DS.attr(),
  item_flags: DS.hasMany('item_flag', {async: true})
});
Social.ItemFlag = DS.Model.extend({
  item: DS.belongsTo('item', {async: true}),
  user: DS.belongsTo('user', {async: true}),
  flag: DS.belongsTo('flag', {async: true}),
});

Here's the relevant handlebars code:

{{#each item in site.sorted_items itemController="item"}}
  {{{item.summary}}}
  {{#each item_flag in item.item_flags}}{{item_flag.flag}}*FF*{{/each}}
{{/each}}

The system outputs a few FF tags for each item - there's definitely item_flag elements in the database, and I can see the calls on my REST endpoint - the system is requesting the item_flags from the database. It just seems like the object on the other side of the belongsTo relationship isn't available here. I tried extending the ItemFlag model to contain this code:

flag_string: function() {
  return this.get('flag').then(function (data) {return data.get('name')});
}.property('flag')

But that just throws a NPE - this.get('flag') on the ItemFlag model returns null. There seems to be some mention of an "embed: always" defined on the adapter, but (a) that's from pre- ember-data-beta days, and (b) it didn't help (also, my records aren't embedded).

What I want to do in the general case here is figure out how to look at a model's parent model, as defined by the relationships in the database.


Turns out, I fell afoul of the new ember-data serializer expectations. My item_flag serializer was responding with json that looked like {id: 1, flag_id:1, user_id:1} when what it should have looked like was {id: 1, flag:1, user:1} . This caused (apparently), the item_flag to get created without the proper parameters.

链接地址: http://www.djcxy.com/p/65580.html

上一篇: 用hasMany关系创建记录

下一篇: 查找belongsTo关系的值