查找belongsTo关系的值

时间:2013-09-11 17:46:03

标签: ember.js ember-data

我有一个系统,我希望用户在项目中添加标记(hashtags)。这是我的模特:

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

以下是相关的把手代码:

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

系统为每个项目输出一些 FF 标签 - 数据库中肯定有item_flag元素,我可以看到我的REST端点上的调用 - 系统正在从数据库请求item_flags。看起来像belongsTo关系另一边的对象在这里不可用。我尝试扩展ItemFlag模型以包含此代码:

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

但是这只会抛出一个NPE - ItemFlag模型上的this.get('flag')返回null。似乎有一些提到在适配器上定义的“embed:always”,但是(a)那是来自pre-ember-data-beta天,以及(b)它没有帮助(同样,我的记录不是嵌入)。

我想在一般情况下做的是弄清楚如何查看模型的父模型,如数据库中的关系所定义。

1 个答案:

答案 0 :(得分:0)

事实证明,我对新的余烬数据序列化器的期望感到沮丧。我的item_flag序列化程序正在使用看起来像{id: 1, flag_id:1, user_id:1}的json响应它应该看起来像{id: 1, flag:1, user:1}。这导致(显然)在没有适当参数的情况下创建item_flag。