mysql - Verbindungstyp mit knex erhalten
Ich schreibe eine Anwendung, die gleichzeitig MySQL und Postgres unterstützt, und benutze dabei Knex.
Für bestimmte Funktionen reicht der Abfragegenerator nicht aus, und ich muss eine MySQL- oder Postgres-spezifische Abfrage schreiben.
Wonach ich suche, ist eine Syntax wie diese:
switch(knex.type) {
case 'mysql' :
knex.raw('...');
break;
case 'pg' :
knex.raw('...');
break;
}
Ich kann anscheinend nicht herausfinden, ob es eine Möglichkeit gibt, dies zu tun. Weder in der Dokumentation noch in den Typen (bis jetzt). Ist das möglich?
Antwort #1
Ich habe dies beim Herumsehen gesehen, und obwohl ich ursprünglich dieselbe Umgebungsvariable verwenden wollte, die ich in der switch-Anweisung verwendet habe, scheint das Folgende gut zu funktionieren.
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 ?
}
};
Der wichtige Teil war, dass knex.client.dialect sich darum kümmern sollte.
