mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-28 03:46:00 +00:00
fix: use correct dbName in connection string
This commit is contained in:
@@ -42,6 +42,28 @@ async function getScriptableDb(dbhan) {
|
|||||||
return db;
|
return db;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} uri
|
||||||
|
* @param {string} dbName
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
|
function ensureDatabaseInMongoURI(uri, dbName) {
|
||||||
|
if (!dbName) return uri;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const url = new URL(uri);
|
||||||
|
|
||||||
|
const hasDatabase = url.pathname && url.pathname !== '/' && url.pathname.length > 1;
|
||||||
|
if (hasDatabase) return uri;
|
||||||
|
|
||||||
|
url.pathname = `/${dbName}`;
|
||||||
|
return url.toString();
|
||||||
|
} catch (error) {
|
||||||
|
logger.error('Invalid URI format:', error.message);
|
||||||
|
return uri;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** @type {import('dbgate-types').EngineDriver<MongoClient>} */
|
/** @type {import('dbgate-types').EngineDriver<MongoClient>} */
|
||||||
const driver = {
|
const driver = {
|
||||||
...driverBase,
|
...driverBase,
|
||||||
@@ -92,7 +114,7 @@ const driver = {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
async script(dbhan, sql) {
|
async script(dbhan, sql) {
|
||||||
const connectionString = dbhan.client.s.url;
|
const connectionString = ensureDatabaseInMongoURI(dbhan.client.s.url, dbhan.database);
|
||||||
const serviceProvider = await NodeDriverServiceProvider.connect(connectionString);
|
const serviceProvider = await NodeDriverServiceProvider.connect(connectionString);
|
||||||
const runtime = new ElectronRuntime(serviceProvider);
|
const runtime = new ElectronRuntime(serviceProvider);
|
||||||
const exprValue = await runtime.evaluate(sql);
|
const exprValue = await runtime.evaluate(sql);
|
||||||
@@ -136,7 +158,7 @@ const driver = {
|
|||||||
let exprValue;
|
let exprValue;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const connectionString = dbhan.client.s.url;
|
const connectionString = ensureDatabaseInMongoURI(dbhan.client.s.url, dbhan.database);
|
||||||
const serviceProvider = await NodeDriverServiceProvider.connect(connectionString);
|
const serviceProvider = await NodeDriverServiceProvider.connect(connectionString);
|
||||||
const runtime = new ElectronRuntime(serviceProvider);
|
const runtime = new ElectronRuntime(serviceProvider);
|
||||||
exprValue = await runtime.evaluate(sql);
|
exprValue = await runtime.evaluate(sql);
|
||||||
|
|||||||
Reference in New Issue
Block a user