javascript - bookshelf.js 关系有很多错误

标签 javascript node.js relationship bookshelf.js

我在使用 Bookshelf 调用 hasMany 时遇到以下错误:

 A valid target model must be defined for the roles hasMany relation

Angular 色.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;

用户.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;

用法:

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

最佳答案

我将我的模型引用为字符串,并使用 Bookshelf 的 registry plugin .

var bookshelf = new Bookshelf( knex );
bookshelf.plugin( 'registry' );

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

var userModel = /*do bookshelf things*/;
bookshelf.model( 'User', userModel );

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

users: function() {
  return this.hasMany( 'User', 'roleId' );
},

关于javascript - bookshelf.js 关系有很多错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26998033/

相关文章:

MySQL - 如何插入具有多对多关系的表

node.js - 如何使用带有属性的包含与 Sequelize ?

javascript - 在数据表中搜索括号

node.js - NodeJS + Nginx + Cloudflare

node.js - 断言失败(node.js): what does Operator parameter mean?

mysql - Eloquent删除与MySQL外键级联

javascript - 传入方法的动态 Typescript 类型

javascript - Node 应用程序上无法获取/文件名错误

javascript - ngClass 条件不适用于多种条件

javascript - NodeJS 请求 mysql DB 以异步方式返回值