node.js - 如何处理 NodeJS Express App 中与 DB 的连接丢失
问题描述
我正在开发一个连接到 MongoDB 数据库的快速应用程序。我的快递服务器可能会失去与数据库的连接,但我的快递服务器应该如何应对这种情况?我准备了以下代码,在其中检查丢失的连接,然后终止应用程序。
const registerCustomer = async (req, res) => {
let validRegistrationCode;
try {
validRegistrationCode = await CustomerRegistrationCode.findOne({ code: req.body.code });
} catch (error) {
if (error instanceof MongoNetworkError || error instanceof MongooseServerSelectionError) {
console.error('Mongo | Mongoose Network Error occurred');
}
process.exit(1);
}
return res.json({ obj: validRegistrationCode });
}
对于对数据库的每次访问,我都必须检查连接错误,我认为这会使代码变得丑陋。如何改进?
解决方案
我认为连接到 mongoDB 的失败通常不会发生,或者在网络丢失的情况下也可能发生,或者你的路径、语法不正确,你应该做的是在设置 mongoose 连接到你的数据库时只检查一次,每次保存代码nodemon都会帮你检查是否连接成功
// connect model with database
const mongoose = require('mongoose');
async function connect() {
try {
await mongoose.connect('mongodb://localhost:27017/collections_clothes', {
// useNewUrlParser: true,
// useUnifiedTopology: true,
// useCreateIndex: true,
});
console.log("Access Database Success!");
} catch (error) {
console.log("Access FAIL!");
}
}
module.exports = { connect };