bookshelf.js关系hasMany错误

Sir*_*Jay 6 javascript relationship node.js bookshelf.js

我在hasMany使用Bookshelf 的电话上收到以下错误:

 A valid target model must be defined for the roles hasMany relation
Run Code Online (Sandbox Code Playgroud)

Role.js

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;
Run Code Online (Sandbox Code Playgroud)

user.js的

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;
Run Code Online (Sandbox Code Playgroud)

用法:

new Role({ id: req.params.id })
.fetch({ require: true, withRelated:['users'] })
.then(function (role) {
  role.users().fetch().then(function(users) {
    console.log('users: ' + users);
  });
})
Run Code Online (Sandbox Code Playgroud)

cla*_*lay 9

我将我的模型作为字符串引用,并使用Bookshelf的注册表插件.

var bookshelf = new Bookshelf( knex );
bookshelf.plugin( 'registry' );
Run Code Online (Sandbox Code Playgroud)

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

var userModel = /*do bookshelf things*/;
bookshelf.model( 'User', userModel );
Run Code Online (Sandbox Code Playgroud)

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

users: function() {
  return this.hasMany( 'User', 'roleId' );
},
Run Code Online (Sandbox Code Playgroud)