2015-04-27 2 views
0

Давайте предположим, что у меня есть эти две модели ниже:Share связь между Bookshelfjs запросов

var user = Bookshelf.Model.extend({ tableName: 'users' }); 
var configuration = Bookshelf.Model.extend({ tableName: 'configurations' }); 

user.fetchAll().then(function(users) { 
    configuration.fetchAll().then(function(configurations) { 
     // Do something... 
    }); 
}); 

ли кто-нибудь знает, если fetchAll() звонки разделяет открытое соединение? Или, может быть, каждый вызов базы данных использует конкретное соединение? Если они не делятся, есть ли способ указать, использовать то же соединение, пока я не закрою операцию или что-то еще? Как BookshelfJS ведет себя в этом вопросе?

Спасибо всем!

ответ

1

Bookshelf.js использует Knex.js под капюшонами, поэтому ответ на ваш вопрос заключается в том, как Knex обрабатывает соединения.

Knex может использовать объединение пулов из библиотеки generic-pool-redux. Он имеет по умолчанию 2 открытых соединения и максимум 10 для баз данных postgres и mysql и одно соединение для sqlite.

Это пример файла конфигурации для изменения значений по умолчанию.

development: { 
    client: 'postgresql', 
    connection: { 
     database: 'db', 
     user:  'username', 
     password: 'mypassword', 
     charset : 'utf8' 
    }, 
    pool: { 
     min: 5, 
     max: 20 
    }, 
    migrations: { 
     tableName: 'migrations' 
    } 
} 

И его это часть документации полки для fetchAll

Выдает коллекцию моделей из базы данных, с помощью каких-либо параметров запроса в настоящее время установленные на модели для формирования запроса на выборку

Таким образом, он образует один запрос Knex и выполняет его, потребляя только одно соединение.

В зависимости от вашего файла конфигурации он будет использовать одно соединение для всего или любого из пула.

Существует option, которые позволяют изменять соединение, используемое для выполнения запроса, но для этого вы должны вызвать метод книжной полки query(), чтобы напрямую обращаться к строителю запросов Knex.

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