2017-05-05 31 views
1

我正在使用node.js和书架作为ORM。我是这个技术的一个严肃的新手。Node.js/Bookshelf - 表中的多列引用另一个表的ID的映射模型

我有一个情况,我有一个数据库表中的几列。为了这个问题,这些列应该被命名为'sold_by_id','signed_off_by_id'和'lead_developer_id',并且都是将引用具有ID的用户表的列。

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

展望未来,我需要能够在这样的方式来获取信息:

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

我试着摸索和阅读文档,但我仍然对如何实现这一目标非常不确定。显然,下面的内容不起作用,我知道第二个参数是针对目标表的,但它说明了我试图实现的概念。

// 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

我不知道从哪里开始,任何人都可以点我在正确的方向?

还是我只是一个白痴?^_^

回答

0

您的定义看起来不错。对于使用它们,将是这样的:

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

除此之外,我会建议你使用Registry插件引用其他车型。这减轻了参考尚未加载模型的痛苦。

+1

这非常有帮助。这些文档让我对“belongsTo”的工作方式感到困惑。干杯!! :) :) – David

相关问题