正在从其他模型获取数据 Ember

Fetching data from other model Ember

我有一个用户模型

export default DS.Model.extend({
    username : DS.attr('string'),
    numberOfQuotes: DS.attr('number'),
    numberOfFollowers: DS.attr('number'),
    numberOfFollowing: DS.attr('number')
});

和引号模型

export default DS.Model.extend({
user: DS.belongsTo('user'),
text: DS.attr('string')
});

我得到的报价还包括用户 ID,为此我正在使用

quotes :this.store.findAll('quote') 但我无法获取用户对象,因此无法检索数据。任何帮助都会有用,谢谢。

1) 来自 ember 本地商店:

如果您想从 ember 商店获取数据,您必须使用 peekAll。在您的控制器或组件中使用计算 属性,

...
quotes: computed(function() {
  return this.store.peekAll('quote');
}),
...

然后您可以按如下方式在您的模板中获取用户数据,

{{#each quotes as |quote|}}
  {{quote.user.username}}
{{/each}}

2) 来自服务器:

注意:findAll 查询要求数据在数组中。

使用 RESTAdapter 时,

{ quotes:
  [ {
     id: 1,
     text: "sample1",
     user: { username: "name1", numberOfQuotes: "5" }
    },
    {
     id: 2,
     text: "sample2",
     user: { username: "name2", numberOfQuotes: "8" }
    }
  ]
}

使用 JSONAPIAdpater 时,

{ quotes:
  [ {
     id: 1,
     text: "sample1",
     user: 10
    },
    {
     id: 2,
     text: "sample2",
     user: 11
    },
    {
     id: 3,
     text: "sample3",
     user: 10
    }
  ],
  users:
  [ {
     id: 10,
     username: "name1",
     numberOfQuotes: "5"
     quotes: [1,3]
    },
    {
     id: 11,
     username: "name2",
     numberOfQuotes: "8"
     quotes: [2]
    }
  ]
}

在您的路由模型挂钩中执行 findAll 查询时,根据您使用的 APIAdapter,以上任何一项都是您将获得的响应类型。

...
model: function() {
  return this.store.findAll('quote');
}
...