【问题标题】:when to close connection in mongodb?什么时候关闭mongodb中的连接?
【发布时间】:2020-12-24 12:06:43
【问题描述】:

我使用 node js express,mongodb 用于 API 和 mongoClient 用于连接。我获取数据它工作正常,我尝试不刷新它会引发“拓扑已关闭”的错误

const express=require("express")
const router=express.Router()
// const bodyParser =require("body-parser")
const client=require("./client")
// express.use(bodyParser.json());
// express.use(bodyParser.urlencoded({ extended: true }));

 
router.get("/users", async(req,res)=>{
     console.log("rouete  3")
   try{ 
       client.connect()
     var db= await client.db("mydb")
     var collection= await db.collection("myDataCol")
     var cvb= await collection.find().toArray()
     res.json(cvb)
     console.log(cvb)
       
 }

catch(er){ console.log(`SOMETHINGS WENT WRONG: ${er}`)
res.json({"scas":er})}
finally{ client.close(()=>{console.log("closed")})  }
})


module.exports=router
<html>
    <head>
        <title>form</title>
    </head>
    <body> 
        <h2>New User</h2>
        <hr/>
<!-- 
        <form action="/user" method="POST">
        <input type="text" name="name">
        <input type="text" name="lastName">
        <input type="submit">
        </form>

        <hr>

        <form action="/user/delete" method="POST">
             <input type="text" name="name" >
            <input type="text" name="lastName">
            <input type="submit">
        </form> -->
        <hr>
        <form action="/users" method="GET">
            <input type="submit">
        </form>

    </body>
</html>

enter image description here ,当我禁用 client.close() 时,它会再次工作并在每次点击底部获取数据时获取数据

【问题讨论】:

    标签: javascript node.js mongodb rest express


    【解决方案1】:

    不要在你的路由中连接到 mongo 客户端,在你的索引或启动文件中连接并从那里传递它。数据库连接应该在整个应用程序中从头到尾都是打开的。

    【讨论】:

    • 我应该在所有路线结束时关闭吗?
    • 数据库连接应该在路由之外。您的应用程序应遵循以下列表。 1-应用程序启动 2-db 连接打开 3-路由和其他功能 4-db 连接关闭 5-应用程序停止
    • 非常感谢,但还有一个问题,我在应用程序结束时关闭,但是当我刷新 html 页面并尝试获取数据时,它说拓扑已关闭,
    • 您应该保持应用程序打开,直到您完成所有操作。因此,只要您想使用 html 页面来获取数据,您就必须有一个开放的服务器和数据库连接。我的建议是查找npmjs.com/package/nodemon。当您进行更改时,此工具将自动重新启动您的服务器,因此您不必手动进行。 (这只是开发工具,不要在生产中使用)
    猜你喜欢
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 2018-05-08
    • 1970-01-01
    相关资源
    最近更新 更多