Ember-data 2:如何在没有商店从服务器获取记录的情况下检索belongsTo模型ID

时间:2016-03-08 22:51:25

标签: ember.js ember-data

我有一个属于activity的{​​{1}}模型。我有一个场景,我只有活动记录,我想要做的就是获取report id,而不是获取整个记录。

report

显然,它知道id,但我无法弄清楚正确的咒语。有人有什么想法吗?

PS。看起来这在ember-data 2中发生了变化,因此之前的答案将无效。

activity.get('report_id') // undefined

activity.get('report.id') // the id! But after a full fetch

2 个答案:

答案 0 :(得分:1)

我认为没有办法在发布渠道中执行此操作,但如果您使用Canary并启用ds-references feature flag,则可以使用RFC 57中列出的功能。

答案 1 :(得分:0)

尽管锁定答案对于理解这种方向非常有帮助,但它并不是立即实用的。 RFC现在有一个简单解决方案的评论。

  1. 向模型添加新的id属性
  2. 填充序列化程序
  3. https://github.com/emberjs/rfcs/pull/57#issuecomment-121008369

    //models/report-activity.js
    export default DS.Model.extend({
      report: belongsTo('report', {async: true}),
      reportId: attr('string'), //set in serializer
    });
    
    //serializers/report-activiy.js
    export default DS.ActiveModelSerializer.extend({
      normalizeAttributes(typeClass, hash) {
        if (hash.report_id) {
          hash.reportId = hash.report_id;
        }
    
        return this._super(typeClass, hash);
      }
    });