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
插件来引用其他模型。这减轻了引用尚未加载的模型的痛苦。
我将 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
插件来引用其他模型。这减轻了引用尚未加载的模型的痛苦。