我正在使用 Knex 编写一个同时支持 MySQL 和 Postgres 的应用程序。
对于某些功能,查询构建器无法实现,我需要编写 MySQL 或 Postgres 特定查询。
我正在寻找的是这样的语法:
switch(knex.type) {
case 'mysql' :
knex.raw('...');
break;
case 'pg' :
knex.raw('...');
break;
}
我似乎找不到是否有办法做到这一点。文档或类型中没有(到目前为止)。这可能吗?
我在检查时看到了这一点,虽然我最初打算使用与 switch 语句中使用的相同的环境变量,但下面的内容似乎工作正常。
const getSqlStatement = (knex: Knex) => {
const database = knex.client.dialect;
switch (database) {
case "mssql":
return mssql statement;
... other cases
default:
// do nothing or throw an error or ?
}
};
重要的是
knex.client.dialect
应该照顾好它。