我在尝试动态设置Knex数据库时遇到问题。我有多个数据库,每小时递增一次。(例如db-1小时、db-2小时(。当我们换到新的时间时,我想使用下一个数据库。我创建了一个示例函数,它基于新数据库返回一个新的Knex函数,但我收到了一个不推荐使用的警告。
我的配置
import knex from 'knex';
const knexConfig = {
client: 'pg',
connection: {
host: host,
port: port,
user: user,
database: '',
password: password,
},
pool: {
min: 2,
max: 10,
},
timezone: 'UTC',
};
exports const getCurrentDb = async () => {
const hourDb = await getLatestDbName()
cons knexConfig.connection.database = hourDb; // I update the database name
return knex(knexConfig);
}
使用
import { getCurrentDb } from "./config"
const getSomething = async () => {
const db = await getCurrentDb()
return db.select().from("something")
}
代码正在工作,但我总是收到警告信息:
calling knex without a tableName is deprecated. Use knex.queryBuilder() instead.
如何动态连接到数据库?提前谢谢!
警告消息与DB切换机制无关。
尝试将您的select
语句更改为类似以下内容:
import { getCurrentDb } from "./config"
const getSomething = async () => {
const db = await getCurrentDb()
return db("something").columns('*')
}