【问题标题】:bookshelfjs node relationshipbookshelfjs节点关系
【发布时间】:2015-01-05 07:36:34
【问题描述】:

我有UserUserRole 的模型。当前有两个角色,并且这两个角色中有许多用户。我找不到获取 user 获取的 role 数据的方法。

我看到的错误是:Error: ER_BAD_FIELD_ERROR: Unknown column 'user_roles.user_id' in 'where clause'

var User = bookshelf.Model.extend({ 
    tableName: 'users',
    role: function() {
        return this.hasOne(UserRole);
    }
}, {
    lookupByToken: Promise.method(function(token) {
        if (!token) throw new Error('Token is required');
        return new this({token: token}).fetch({require: true, withRelated:['role']});
    })
});

.

var UserRole = bookshelf.Model.extend({
  tableName: 'user_roles',
  users: function() {
    return this.belongsToMany(User, 'users', 'role_id', 'id');
  }
});

module.exports = UserRole;

knex 迁移如下所示:

knex.schema.createTable('user_roles', function (table) {
    table.increments();
    table.string('role').notNullable();
    table.timestamps();
}).table('users', function(table) {
    table.integer('role_id').unsigned().references('user_roles.id');
})

有什么想法吗?

【问题讨论】:

    标签: mysql node.js bookshelf.js knex.js


    【解决方案1】:

    我想通了。 User 模型不正确,应该阅读:

    role: function() {
        return this.belongsTo(UserRole, 'id');
    }
    

    使用 user.role() 现在可以按预期进行更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多