【问题标题】:ember data 1.13.8 and ember cli mirage confusionember data 1.13.8 和 ember cli mirage 混淆
【发布时间】:2026-01-22 09:15:01
【问题描述】:

这是我的 Ember 检查器信息选项卡:

我正在使用 ember-cli-mirage,但在这里遇到了问题。

我无法获取模型的 belongsTo 关系。当我执行car.get('user') 时,我会得到一个结果承诺,它会得到满足,但值始终是null

我的用户模型 从“ember-data”导入 DS;

export default DS.Model.extend({
  name: DS.attr('String'),
  car: DS.belongsTo('car',{async: true})
});

我的车型

import DS from 'ember-data';

export default DS.Model.extend({
  color: DS.attr('String'),
  user: DS.belongsTo('user',{async: true})
});

我的海市蜃楼/配置

  this.get('/cars',function(db,request) {
    var qp = request.queryParams.searchString.toLowerCase();
    return {
      cars: db.cars.where({'color':qp}),
      users: db.users
    };
  });

我得到了带有搜索颜色的汽车列表,但我没有得到用户。 它返回一个 Promise,当它完成时返回 null。

由于我使用的是 ember-data 1.13.8

我尝试使用此Mirage working with json,但随后出现错误 基准模型未定义错误所以我猜新的 json api 不是我的问题,由于某种原因我的 ember 数据使用旧的 json 格式并且原始配置有效。

this.get('/cars', function(db, request) {
  return {
    data: db.cars.map(attrs => (
      {type: 'cars', id: attrs.id, attributes: attrs }
    ))
  };
})

我的汽车路线如下所示

 model: function(params) {
    self = this;
    if(!params){
        return [];
    }
    return this.store.findQuery('car',params);
  },

我试过了

return this.store.findQuery('car',params).then(function(item){
      console.log(item.get('user'));
    });

但我还是得到了console.log //undefined

我可以在我返回的 json 中看到 user_id。

解决方案: 发现我将关系保存为user_id = user.id. 的问题应该是user=user.id

【问题讨论】:

  • 我发现我将关系保存为 user_id = user.id 的问题。它应该是 user=user.id
  • 您应该将此作为答案发布在此问题中,并将您的答案标记为已接受。这样每个人都会知道您找到了解决方案,并且问题将不再被标记为未回答。 :)

标签: ember.js ember-cli-mirage


【解决方案1】:

解决方案:发现我将关系保存为user_id = user.id 的问题。应该是user=user.id

【讨论】: