我正在为我的api使用无服务器的node.js快速布局,我正在使用mongoose作为mongoDB Connection的包装器。然后,我将db函数称为快速中间件函数。
但是,每出现3/4个连接,该连接就会失效,因此,如果mongoose.connection.readyState
读为true
,则该连接不正确。
我遍历了许多博客和github问题中的mongoose,我尝试了从删除buffer options
到更改socket timeout
设置的所有过程,但是没有运气。看来很多人都遇到了这个问题,但是github moongoose的贡献者只是在解决那些从未提供反馈的问题。
任何帮助将不胜感激。
DB.js
const mongoose = require('mongoose')
mongoose.Promise = global.Promise;
module.exports = {
async start() {
return new Promise(function(resolve, reject) {
if (mongoose.connection.readyState ) {
console.log('=> using existing database connection')
return resolve();
}
console.log('=> using new database connection')
return mongoose.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
autoReconnect: true,
poolSize: 25
}).then((db) => {
return resolve(db);
}).catch((error) => {
return reject(error);
})
});
}
}
快速处理程序调用
const DB = require('../functions/db.js');
const Response = require('../classes/Response.js');
const databaseHandler = async (req, res, next) => {
try {
await DB.start();
next();
} catch (error) {
var responder = Response({
statusCode: 502,
success: false,
status: "server-error",
message: "There was an issue connecting to the database."
})
res.status(responder.statusCode).send(responder.response)
}
}
module.exports = databaseHandler