如何在Node.js的Bookshelfjs中连接两个表
我在MySQl DB中有两个表格:
顾客:
- cust_ID(PK)
- CUST_NAME
- trans_ID(FK)
交易
- trans_id(PK)
- trans_amount
在Node.js中,我为这两个表创build了两个模型,现在我想在这两个基于trans_id的表上进行Inner Join。 我没有得到如何做的想法。
var Transaction = bookshelf.Model.extend({ tableName: 'Transaction' }); var Customer = bookshelf.Model.extend({ tableName: 'Customer' });
我自己是一个bookshelf.js初学者,但是如果我没有弄错的话,bookshelf.js会抽象出内连接的概念。 相反,如果你的问题可以被翻译成“我怎么得到一个交易/交易及其相关的客户? 答案会是这样的:
transaction.js:
var Transaction = bookshelf.Model.extend({ tableName: 'Transaction', customers: function() { return this.hasMany(Customer, 'trans_ID'); } });
customer.js:
var Customer = bookshelf.Model.extend({ tableName: 'Customer', transaction: function() { return this.belongsTo(Transaction, 'trans_ID'); } });
要与其所有相关客户进行交易,请执行以下操作:
new Transaction() .where('trans_id', 1) .fetch({withRelated: ['customers']}) .then(function(theTransaction) { var arrayOfCustomers = theTransaction.customers; //... });
有关更多信息,请参阅bookshelf.js的 hasMany和belongsTo文档。
我希望这个答案是在你要找的地方。