余烬数据加载有许多关系在余烬应用程序工具包 (EAK) 中不起作用



我试图在两个模型之间建立一个hasMany关系,在hasMany和hasOne之间建立一个hasOne(在当前版本的Ember Data中是belongsTo)。

我正在使用Ember数据,并根据Ember的约定制作了一个RESTful API。所有的类都可以单独查询。

Bookmark    = hasMany   -> Termbinding
Termbinding = belongsTo -> Term
Term        = belongsTo -> Termbinding

所以目标是获取一个Bookmark,并通过Termbinding获得附着在它上面的Terms。我已经很高兴让BookmarkTermbinding关系工作。我把贴在这里的所有问题都看了一遍,可惜都没用。

Router.js

var Router = Ember.Router.extend();
Router.map(function() {
   this.resource('bookmarks', { path:'bookmarks'});
   this.resource('bookmark', { path:'bookmarks/:bookmark_id' });
   this.resource('termbindings', { path:'termbindings' });
   this.resource('termbinding', { path:'termbindings/:termbinding_id' });
});
export default Router;

Bookmark.js

var Bookmark = DS.Model.extend({
   url: DS.attr('string'),
   description: DS.attr('string'),
   visits: DS.attr('number'),
   termbinding: DS.hasMany('termbinding')
});
export default Bookmark;

Termbinding.js

var Termbinding = DS.Model.extend({
   bookmarkId: DS.attr('number'),
   termId: DS.attr('number'),
   termOrder: DS.attr('number'),
   bookmarks: DS.belongsTo('bookmark')
});
export default Termbinding;

我希望有人能帮助我,因为这是阻止我使用烬为我的书签应用程序。

显式指定您的逆函数可能是明智的,即

var Termbinding = DS.Model.extend({
  bookmarkId: DS.attr('number'),
  termId: DS.attr('number'),
  termOrder: DS.attr('number'),
  bookmarks: DS.belongsTo('bookmark', { inverse: 'termbinding' })
});
export default Termbinding;
var Bookmark = DS.Model.extend({
  url: DS.attr('string'),
  description: DS.attr('string'),
  visits: DS.attr('number'),
  termbinding: DS.hasMany('termbinding', { inverse: 'bookmarks' })
});
export default Bookmark;

Ember Data将尝试为您映射逆,然而,它并非没有错误。可能是DS上的"书签"的复数形式。belongsTo关系脱离了它的自动逆映射。通常对于belongsTo,你会使用单数形式bookmark。相反,您的hasMany将是termbindings: DS.hasMany('termbinding')

另外,如果您能显示您调用模型的位置,那将非常感谢。通常,我发现在emberjs.jsbin.com上创建JSbin可以帮助我隔离问题,并且还提供了一个协作空间来调试和实验。

相关内容

  • 没有找到相关文章

最新更新