如何在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文档。

我希望这个答案是在你要找的地方。