gpt4 book ai didi

javascript - 共享 Bookshelf Js 查询之间的连接

转载 作者:行者123 更新时间:2023-12-03 10:15:18 28 4
gpt4 key购买 nike

假设我有以下两个模型:

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 在这件事上表现如何?

谢谢大家!

最佳答案

Bookshelf.js 在底层使用 Knex.js,因此您问题的答案在于 Knex 如何处理连接。

Knex 可以使用 generic-pool-redux 中的连接池图书馆。对于 postgres 和 mysql 数据库,默认有 2 个打开的连接,最多 10 个;对于 sqlite,有一个连接。

这是更改默认值的配置文件示例。

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

他是 fetchAll 书架文档的一部分

Fetches a collection of models from the database, using any query parameters currently set on the model to form a select query

因此它将形成一个 Knex 查询并仅消耗一个连接来执行它。

根据您的配置文件,它将对池中的所有内容或任何可用的内容使用单个连接。

有一个option允许您更改用于执行查询的连接,但为此您必须调用书架 query()方法直接进入 Knex 查询生成器。

关于javascript - 共享 Bookshelf Js 查询之间的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29903296/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com