如何在Bookshelf.js中加入三个表?

时间:2017-02-27 04:01:12

标签: javascript mysql node.js bookshelf.js

我阅读了与through相关的Bookshelf文档,但是,我无法知道如何继续。我有三个表以不同于Bookshelf使用的约定命名。基本上,一个集团通过个人资料拥有许多用户。最后一个建立连接。

Table Name: User
   - id_user
   - username
   - password

Table Name: Profile
  - id_user
  - id_group

Table Name: Group
 - id_group
 - name
 - description
 - status

我的小组模型是这样的:

module.export = BookShelf.model('Group', {
  tableName: 'pats_grupos',

  users: function() {
    return this.hasMany('User').through('Profile');
  }
});

考虑到我的表不遵循_id约定(而是id_约定),如何告诉Bookshelf使用我的自定义表命名模式?

1 个答案:

答案 0 :(得分:0)

相对于Bookshelf's idAttribute documentation,当不使用默认的“id”时,您必须更改模型以显式声明使用的id属性。像:

module.export = BookShelf.model('Group', {
  tableName: 'pats_grupos',
  idAttribute: 'id_group',

  users: function() {
    return this.hasMany('User').through('Profile');
  }
});

由于您的外键也没有遵循Bookshelf的默认命名,可能也必须在through() call上明确声明它们。类似的东西:

//...
users: function() {
  return this
    .hasMany('User')
    .through('Profile', 'id_user', 'id_group');
}
//...