当前位置: 首页 > 知识库问答 >
问题:

从NodeJS插入1084次后出现MongoDB连接错误

牟嘉
2023-03-14

我是MongoDB和NodeJS的新手。我编写了一个简单的应用程序,测试RESTFUL状态API的写入速度:

const express = require('express')
const port = process.env.PORT
var MongoClient = require('mongodb').MongoClient;
const router = express.Router()

router.post('/mongo-log', async(req, res) => {
    try {
      let syserr = false;
      let e = null;
      await MongoClient.connect(process.env.MONGODB_URL,async function(err,db) {
        if(err)
        {
            console.log("-------------CONNECT ERROR----------");
            console.log(err);
            process.exit(1);
        }
        const dbo = db.db(process.env.MONGODB_NAME);
        await dbo.collection("mongolog").insertOne({details:req.body.details,createDate:(new Date())},function(err,res) {

          if(err)
          {
            console.log("-------------INSERT ERROR----------");
            console.log(err);
            process.exit(1);
          }

        });
      });
      if(e) throw e;
      res.status(201).send({"success":true})
    } catch (error) {
        console.log(error);
        res.status(400).send(error)
    }

  })

var cors = require('cors')

const app = express()

app.use(cors())
app.use(express.json())
app.use(router)

if(process.env.SSL_KEY && process.env.SSL_CRT) {
    const https = require('https')
    const fs = require('fs')
    const options = {
      key: fs.readFileSync(process.env.SSL_KEY),
      cert: fs.readFileSync(process.env.SSL_CRT)
    }

    var server = https.createServer(options, app)

    server.listen(port, () => {
      console.log("server starting on port : " + port)
    })
} else {
    app.listen(port, () => {
        console.log(`Server running on port ${port}`)
    })
}

我从终端使用npm start启动应用程序。然后我编写了一个单独的python脚本,其中包含无限的while循环,没有任何睡眠器/超时,只需提交{详细信息:{一堆嵌套对象}}带有request.post()

几秒钟内一切正常。但当我的API向mongodb写入1084条记录时,我从上面的一条if语句中得到了以下错误:

-------------连接错误----------

MongoNetworkError:无法在第一次连接时连接到服务器[127.0.0.1:27017]。[Error:在Socket的WriteGratedSpatched(internal/stream_base_commons.js:150:25)在writeGeneric(internal/stream_base_commons.js:141:3)在Socket的writeGeneric(net.js:776:11)在doWrite的WriteGenerate(net.js:788:8:8)在writeOrBuffer(_stream_Writeable.js:453:12)在插座上。可写。在连接处写入(_stream_writable.js:315:11)。在performinialhandshake(/home/john/projects/dbperformance/node_modules/mongodb/lib/core/connection/connection.js:271:21)的runCommand(/home/john/projects/dbperformance/dbperformance/node_modules/mongodb/lib/lib/core/connection/connection/connection/connection.js:122:3){name:'MongoNetworkError',[Symbol(mongoErrorContextSymbol)]:{}}]在游泳池。(/home/john/projects/dbperformance/node_modules/mongodb/lib/core/topologies/server.js:438:11)在池中。emit(events.js:210:5)位于/home/john/projects/dbperformance/node_modules/mongodb/lib/core/connection/pool。js:561:14 at/home/john/projects/dbperformance/node_modules/mongodb/lib/core/connection/pool。js:994:11在回调时(/home/john/projects/dbperformance/node_modules/mongodb/lib/core/connection/connect.js:97:5)在/home/john/projects/dbperformance/node_modules/mongodb/lib/core/connection/connect。js:124:7 at_callback(/home/john/projects/dbperformance/node_modules/mongodb/lib/core/connection/connect.js:349:5)at connection。对象上的errorHandler(/home/john/projects/dbperformance/node_modules/mongodb/lib/core/connection/connect.js:365:5)。连接处的onceWrapper(events.js:300:26)。emit(events.js:210:5){name:'MongoNetworkError',[Symbol(mongoErrorContextSymbol)]:{

为什么每次记录1084条之后,我都会收到一个错误?

共有1个答案

拓拔弘化
2023-03-14

您不应该在每个请求上都创建与MongoDB的新“连接”。尝试将连接代码移到请求处理程序之外。

await MongoClient.connect(process.env.MONGODB_URL,async function(err,db) {
router.post('/mongo-log', async(req, res) => {
     if(err)
        {
            console.log("-------------CONNECT ERROR----------");
            console.log(err);
            process.exit(1);
        }
        const dbo = db.db(process.env.MONGODB_NAME);

    try {
      let syserr = false;
      let e = null;
        await dbo.collection("mongolog").insertOne({details:req.body.details,createDate:(new Date())},function(err,res) {

          if(err)
          {
            console.log("-------------INSERT ERROR----------");
            console.log(err);
            process.exit(1);
          }

        });
      });
      if(e) throw e;
      res.status(201).send({"success":true})
    } catch (error) {
        console.log(error);
        res.status(400).send(error)
    }

  })


 类似资料:
  • 我是nodejs和MongoDB的重要成员。尝试连接到数据库时遇到以下错误: (节点:10124)UnhandledPromiseRejectionWarning:MongoNetworkError:在池上第一次连接[MongoNetworkError:connect Econnn拒绝127.0.0.1:27017]时无法连接到服务器[127.0.0.1:27017].(E:\node js wo

  • 问题内容: 我知道我正在做一些非常愚蠢和愚蠢的事情,但是我希望有人可以帮助我建立从Mac上的node.js到mongodb的基本数据库连接。 我已经使用自制软件安装了mongodb,看起来效果很好。我已经以本地登录用户身份启动了服务器(mongod),并打开了第二个终端,并确认可以使用mongo连接到该服务器。当我运行mongo时,出现消息“正在连接:localhost:27017 / test”

  • 我正在创建nodejs服务器,并将其连接到EC2实例上的本地mongodb。与mongodb的连接错误。 我在本地机器上试用过,运行良好。我已经成功地尝试使用MongoAtlas。但在EC2实例上尝试时,会显示错误消息: telegram-bot-02@0.0.0启动 /home/ec2-user/workspace/rep01节点。 mongdb://127.0.0.1:27017/telegr

  • 在nodeJS应用程序中,我希望通过其UNIX套接字。我用这个包裹https://mongodb.github.io/node-mongodb-native/?jmp=docs(版本3.1.6),通过这种方式: 此处的文档中引用了URI:https://docs.mongodb.com/manual/reference/connection-string/#unix-域套接字。但在我的例子中,它失

  • 下面是/etc/kafka/connect-MongoDB-source.properties中的MongoDB配置 但是低于误差 以独立模式运行连接器。 我在debezium-debezium-连接器-mongob-1.0.0/debezium-connector-mongodb-1.0.0.Final.jar 类路径的设置如下 使用插件路径,我看到它能够注册和加载所有必需的插件。 但最后还是同

  • 我使用nodejs和mqlight来运行https://www.npmjs.com/package/mqlight提供的示例代码。 我使用的是NodeJS5.5.0和npm版本是3.3.12。 我使用 null 当我运行上面的代码时,我得到了下面的错误。 请帮助解决这个问题。我使用的是Windows 7 64位操作系统。