From 6d69e8873977e186224263679939ce500e31c7bb Mon Sep 17 00:00:00 2001 From: undefined Date: Sat, 10 Dec 2022 04:41:49 +0800 Subject: [PATCH] core: db: prefer connection uri --- install/install.ts | 6 +----- packages/hydrooj/src/service/db.ts | 10 ++++++++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/install/install.ts b/install/install.ts index e94100cc..f34783d4 100644 --- a/install/install.ts +++ b/install/install.ts @@ -336,11 +336,7 @@ connect-timeout = 10`); })})`), [`mongo 127.0.0.1:27017/hydro ${tmpFile}`, { retry: true }], () => writeFileSync(`${process.env.HOME}/.hydro/config.json`, JSON.stringify({ - host: '127.0.0.1', - port: 27017, - name: 'hydro', - username: 'hydro', - password, + uri: `mongodb://hydro:${password}@127.0.0.1:27017/hydro`, })), 'pm2 stop mongod', 'pm2 del mongod', diff --git a/packages/hydrooj/src/service/db.ts b/packages/hydrooj/src/service/db.ts index 9bcb433c..adb27557 100644 --- a/packages/hydrooj/src/service/db.ts +++ b/packages/hydrooj/src/service/db.ts @@ -17,6 +17,7 @@ interface MongoConfig { port?: string, name?: string, url?: string, + uri?: string, prefix?: string, } @@ -29,7 +30,7 @@ class MongoService { let mongourl = `${opts.protocol || 'mongodb'}://`; if (opts.username) mongourl += `${opts.username}:${encodeURIComponent(opts.password)}@`; mongourl += `${opts.host}:${opts.port}/${opts.name}`; - if (opts.url) mongourl = opts.url; + if (opts.url || opts.uri) mongourl = opts.url || opts.uri; return mongourl; } @@ -42,7 +43,12 @@ class MongoService { mongourl = mongod.getUri(); } this.opts = opts; - this.client = await MongoClient.connect(mongourl, { useNewUrlParser: true, useUnifiedTopology: true }); + this.client = await MongoClient.connect(mongourl, { + useNewUrlParser: true, + useUnifiedTopology: true, + readPreference: 'nearest', + writeConcern: 'majority', + }); this.db = this.client.db(opts.name || 'hydro'); await bus.parallel('database/connect', this.db); }