ember-pouch:当belongsTo端是多态的时,不加载hasMany关系

时间:2017-05-25 18:22:34

标签: ember.js ember-data couchdb pouchdb relational-pouch

我有一个使用ember-pouch适配器的本地和版本的余烬数据应用程序远程存储。

hasMany方是多态时,我无法加载belongsTo关系。我在async: true/false方面使用过donstsave: true/falsehasMany个选项,但无济于事。

设置:

  • post可以包含多个comments
  • comment可以包含多个comments
  • comment属于commentable
// app/models/post.js
import DS from 'ember-data';
import { Model } from 'ember-pouch';

export default Model.extend({
    DS.hasMany('comment', { inverse: 'commentable' });
});

// app/models/comment.js
import DS from 'ember-data';
import { Model } from 'ember-pouch';

export default Model.extend({
    DS.belongsTo('commentable', { polymorphic: true });
    DS.hasMany('comment', { inverse: 'commentable' });
});

问题

调用post.get('comments')不加载任何内容。但是,如果将注释分别加载到商店中,则post能够正确呈现注释:

// In the console (being mindful that `post.get('comments')` returns a promise)

const post = store.findRecord('post', '123');
post.get('comments').get('length'); // => 0

store.findAll('comment');
post.get('comments').get('length'); // => 12

1 个答案:

答案 0 :(得分:0)

在一个实验中对我有用的东西(尽管我在适配器中大量修改了ember-pouch)正在使用post.get('comments').content.length,但是不要问我为什么会这样,是否应该那样。 ..

编辑: 似乎问题在于此时未加载数据。因此类似post.get('comments').then(function() {this.debug(post.get('comments').length}))的东西可能会起作用。