Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 如何区分余烬中的自指模型_Ember.js_Ember Data - Fatal编程技术网

Ember.js 如何区分余烬中的自指模型

Ember.js 如何区分余烬中的自指模型,ember.js,ember-data,Ember.js,Ember Data,我有一个朋友模型,它有一个对相关朋友的自引用: export default DS.Model.extend({ friends: hasMany('friend', {inverse : 'relatedFriend'}), relatedFriend: belongsTo('friend', {inverse : 'friends'}) }); 我在加载一组朋友时遇到了一个问题,并且在加载他们的相关朋友时遇到了一个问题 假设我的路线的模型挂钩如下所示: model() { re

我有一个
朋友
模型,它有一个对
相关朋友的自引用

export default DS.Model.extend({
  friends: hasMany('friend', {inverse : 'relatedFriend'}),
  relatedFriend: belongsTo('friend', {inverse : 'friends'})
});
我在加载一组朋友时遇到了一个问题,并且在加载他们的相关朋友时遇到了一个问题

假设我的路线的模型挂钩如下所示:

model() {
  return this.store.find(‘/friend’, {page: 1});
}
服务器响应第1页的10条好友记录。但是,这些朋友都有朋友,我想为每个主要朋友附带3个相关的朋友。所以,我也会有30个朋友

通常,对于这种类型的响应,我的json看起来像

{
  friends: [
    {id: 1, ...
    {id: 2, ...
    {id: 2, ...
  ]
}
问题是,如果我的回复将所有这些都放在我json中的一个
friends
键下,
model
将不会是我请求的单个friends页面;它将是所有的朋友(本例中为40)


我如何区分查询中的“主要”好友和侧加载的相关模型?

我们提出了一个解决方案。让服务器将相关朋友置于单独的密钥下:

{ 
  friends: [
    {id: 1, ...
    {id: 2, ...
  ],
  related_friends: [
    {id: 11, ...
    {id: 12, ...
  ]
}
然后,为
相关朋友制作一个自定义序列化程序,将他们作为
朋友
模型推送到商店:

// serializers/related-friend.js
export default ApplicationSerializer.extend({
  extract(store, primaryModelClass, payload) {
    const relatedFriends = payload.related_friends;

    // load any related_friends as friends
    if (relatedFriends) {
      relatedFriends.forEach(attrs => store.pushPayload('friend', {
        friend: attrs
      }));

      delete payload.related_friends;
    }

    return this._super.apply(this, arguments);
  }
});

现在,路由的
模型
代表了我们的查询,但是所有侧面加载的数据都被适当地推送到了存储中。

我认为这个问题没有余烬数据解决方案,至少现在还没有。我想你必须给你的主要朋友贴上标签,比如说
isPrimary
,然后让你的列表只显示主要朋友。这个项目对余烬数据有严格要求吗?我们正在使用它,但是,我想听听有什么解决方案。我觉得这个问题有一个更高层次的部分,我不是100%清楚