Node.js/Bookshelf - 映射模型,其中 table 中的多个列引用另一个 table 的 ID

Node.js/Bookshelf - Mapping model where multiple columns in a table reference the ID of another table

我将 node.js 与书架一起用作 ORM。我是这项技术的认真新手。

我遇到这样一种情况,我在数据库中有多个列 table。对于这个问题,这些列应命名为 'sold_by_id'、'signed_off_by_id' 和 'lead_developer_id',并且都是将引用具有 ID 的用户 table 的所有列。

换句话说,系统中的不同用户在任何时候都会与三个不同的角色关联,不一定是唯一的。

今后,我需要能够通过以下方式检索信息:

let soldByLastName = JobTicket.soldBy.get('last_name');

我已经尝试四处搜索并阅读文档,但我仍然不确定如何实现这一点。显然下面的内容不起作用,我知道第二个参数是针对目标 table,但它说明了我想要实现的概念。

// JobTicket.js
soldBy: function() {
    return this.belongsTo(User, 'sold_by_id');
},

signedOffBy: function() {
    return this.belongsTo(User, 'signed_off_by_id');
},

leadDeveloper: function() {
    return this.belongsTo(User, 'lead_developer_id');
}

显然我需要在 User.js

中有一套相应的方法

我不知道从哪里开始,谁能给我指出正确的方向??

还是我就是个白痴? ^_^

您的定义看起来是正确的。要使用它们,它将类似于:

new JobTicket({ id: 33 })
  .fetch({ withRelated: [ 'soldBy', 'signedOffBy' ] })
  .then(jobTicket => {
    console.log(jobTicket.related('soldBy').get('last_name');
  });

此外,我建议您使用 Registry 插件来引用其他模型。这减轻了引用尚未加载的模型的痛苦。