52 lines
1.0 KiB
JavaScript
52 lines
1.0 KiB
JavaScript
const { MongoClient } = require("mongodb");
|
|
|
|
async function exec() {
|
|
const client = new MongoClient(process.env.APPSMITH_MONGODB_URI, {
|
|
useNewUrlParser: true,
|
|
useUnifiedTopology: true,
|
|
});
|
|
checkReplicaSet(client)
|
|
.then((res) => {
|
|
// support replica set
|
|
if (res === 0) {
|
|
client.close();
|
|
process.exit(0);
|
|
}
|
|
|
|
// not support replica set
|
|
if (res === 1) {
|
|
client.close();
|
|
process.exit(1);
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
// exit 1 for any other error
|
|
client.close();
|
|
process.exit(1);
|
|
});
|
|
}
|
|
|
|
async function checkReplicaSet(client) {
|
|
await client.connect();
|
|
return await new Promise((resolve) => {
|
|
try {
|
|
client
|
|
.watch()
|
|
.on("change", (change) => console.log(change))
|
|
.on("error", () => resolve(1));
|
|
|
|
// setTimeout so the error event can kick-in first
|
|
setTimeout(() => {
|
|
resolve(0);
|
|
}, 1000);
|
|
} catch (err) {
|
|
console.log(err.stack);
|
|
resolve(1);
|
|
}
|
|
});
|
|
}
|
|
|
|
module.exports = {
|
|
exec,
|
|
};
|