首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bookshelf.js relationship hasMany错误

bookshelf.js relationship hasMany错误
EN

Stack Overflow用户
提问于 2014-11-18 23:34:53
回答 2查看 2.6K关注 0票数 6

我在使用书架进行hasMany调用时遇到以下错误:

代码语言:javascript
复制
 A valid target model must be defined for the roles hasMany relation

Role.js

代码语言:javascript
复制
var Data = require('../server-includes/Data'),
    User = require('./User');

var Role = Data.bookshelf.Model.extend({
  tableName: 'roles',
  users: function() {
    return this.hasMany(User, 'role_id');
  }
});

module.exports = Role;

User.js

代码语言:javascript
复制
var Data = require('../server-includes/Data'),
    Role = require('./Role');

var User = Data.bookshelf.Model.extend({ 
  tableName: 'users',
  role: function() {
    return this.belongsTo(Role, 'id');
  },
};

module.exports = User;

用法:

代码语言:javascript
复制
new Role({ id: req.params.id })
.fetch({ require: true, withRelated:['users'] })
.then(function (role) {
  role.users().fetch().then(function(users) {
    console.log('users: ' + users);
  });
})
EN

回答 2

Stack Overflow用户

发布于 2014-11-18 23:59:45

我引用我的模型作为字符串,并使用书架的registry plugin

代码语言:javascript
复制
var bookshelf = new Bookshelf( knex );
bookshelf.plugin( 'registry' );

然后我定义并创建一个模型:

代码语言:javascript
复制
var userModel = /*do bookshelf things*/;
bookshelf.model( 'User', userModel );

然后,当我创建一个.hasMany时,我使用一个字符串来引用。

代码语言:javascript
复制
users: function() {
  return this.hasMany( 'User', 'roleId' );
},
票数 9
EN

Stack Overflow用户

发布于 2015-11-26 03:39:14

post.js

代码语言:javascript
复制
Bookshelf.plugin('registry')
var Category = require('./category')
var Post = Bookshelf.Model.extend({
    tableName: 'posts',
    hasTimestamps: true,
    categories: function () {
        return this.belongsTo('Category', 'category_id');
    },
});
module.exports = Bookshelf.model('Post',Post);

category.js

代码语言:javascript
复制
Bookshelf.plugin('registry');
var Post = require('./post');
var Category = Bookshelf.Model.extend({
    tableName: 'categories',
    hasTimestamps: true,
    posts : function () {
         return this.hasMany('Post');
    }
});
module.exports = Bookshelf.model('Category', Category);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26998033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档