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%清楚