Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongoDB连接太多如何正确关闭它们?_Javascript_Node.js_Mongodb_Express - Fatal编程技术网

Javascript mongoDB连接太多如何正确关闭它们?

Javascript mongoDB连接太多如何正确关闭它们?,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我在我的带有ExpressJS的NodeJS项目中使用MongoDB。以及mongoDB npm依赖项。奇怪的是,每次执行POST或GET请求时,它都会打开一个新连接,几次之后,我会收到以下错误: 已配置限制的连接数%已超过80 按如下方式打开连接: const mongodb = require ('mongodb'); module.exports = { dbConn: async function(table) { const client = await mongodb

我在我的带有ExpressJS的NodeJS项目中使用MongoDB。以及mongoDB npm依赖项。奇怪的是,每次执行POST或GET请求时,它都会打开一个新连接,几次之后,我会收到以下错误:

已配置限制的连接数%已超过80

按如下方式打开连接:

const mongodb = require ('mongodb');

module.exports = {
  dbConn: async function(table) { 
    const client = await mongodb.MongoClient.connect
    ('mongodb+srv://xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.mongodb.net/test?retryWrites=true', {
      useNewUrlParser: true
    });

    return client.db('test').collection(table);
  }
}
执行GET或POST请求:

const db = require('./db');

router.get('/:id', async (req, res) => {
  try{ 
    const keywords = await db.dbConn('kw_data');
    data = await keywords.findOne({hash: req.params.id});
    if(data != null){
      res.status(200).send(data);
    }
    else{
      res.status(200).send({"result": false});
    }
  }
  catch(e){
    res.status(400).send(e);
    res.status(404).send(e);
    res.status(500).send(e); 
  }
})

是这样我才能以某种方式关闭连接,还是让连接保持打开状态?

您应该调用
mongodb.MongoClient.connect
一次,而不是每次请求。感谢您指出了正确的方向,我如何检查连接是否打开以及我需要调用什么?另请参阅