如何在Node.js中的bookshelfjs中加入两个表

时间:2015-01-02 12:45:33

标签: mysql node.js bookshelf.js

我在MySQl DB中有两个表:

客户:

  
      
  • cust_ID(PK)
  •   
  • CUST_NAME
  •   
  • trans_ID(FK)
  •   

交易

  
      
  • trans_id(PK)
  •   
  • trans_amount
  •   

在Node.js中,我为这两个表创建了两个模型,现在我想基于trans_id对这两个表进行内部连接。我没有得到如何做的想法。

var Transaction = bookshelf.Model.extend({
    tableName: 'Transaction'
});

var Customer = bookshelf.Model.extend({
   tableName: 'Customer'
});

1 个答案:

答案 0 :(得分:3)

我自己也是一个bookhelf.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的hasManybelongsTo文档。

我希望这个答案能够满足您的需求。