2015-01-02 3 views
2

У меня есть две таблицы в БД MySQL, которые:Как Объединить две таблицы в bookshelfjs в Node.js

Заказчик:

  • CUST_ID (PK)
  • CUST_NAME
  • trans_ID (FK)

Transaction

  • trans_id (PK)
  • trans_amount

В Node.js я создал две модели для обоих из этих таблиц, теперь я хочу сделать Внутреннее соединение на обеих этих таблицах основано на trans_id. Я не понимаю, как это сделать.

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

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

ответ

3

Я 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 для получения дополнительной информации.

Я надеюсь, что этот ответ был в центре того, что вы искали.

+3

И это будет несколько целых разделенных запросов, а не соединение. – garkin

 Смежные вопросы

  • Нет связанных вопросов^_^