網站搜尋

mysql - 使用 knex 獲取連接類型


我正在編寫一個同時支持 MySQL 和 Postgres 的應用程式,使用 Knex。

對於某些功能,查詢生成器不夠用,我需要編寫 MySQL 或 Postgres 專用的查詢。

我正在尋找的語法是像這樣的:

switch(knex.type) {

  case 'mysql' :
    knex.raw('...');
    break;
  case 'pg' :
    knex.raw('...');
    break;

}

我似乎找不到是否有辦法做到這件事。在文件或類型中(到目前為止)都沒有。這有可能嗎?

答案#1

我在四處查看時看到了這個,雖然我原本打算使用我在 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 應該處理它。