![](/img/trans.png)
[英]What is relationship between Express routes and client routes in NextJS?
[英]What's the best way to structure MongoClient and express: Client inside routes or routes inside client?
在Express中使用MongoClient的最佳方法是什么? 客户端内部路由还是客户端内部路由? 我已经看过有关这两个的一些教程,但是现在我混淆了哪个是正确的教程?
app.get('/',(req,res)=>{
MongoClient.connect('connection_str',(err,db)=>{
err? console.log(`Error: ${err}`) :
db.collection('collection_name',(err,docs)=>{
err? console.log(`Error: ${err}`) :
res.json(docs);
});
});
});
要么
MongoClient.connect('connection_str',(err,db)=>{
app.get('/',(req,res)=>{
db.collection('collection_name',(err,docs)=>{
err? console.log(`Error: ${err}`) :
res.json(docs);
});
});
});
第一个看起来很安全,但是在不同的路由上是多余的,而第二个对于不同的路由是理想的,我刚刚开始学习mern堆栈,并想只使用mongodb的本地mongo客户端而不是mongoose。 最好的方法是什么? 谢谢!
我不建议您当前使用的任何方法。 相反,我建议您一次创建一个数据库连接,然后将该连接重新用于所有路由,或者也可以继续使用数据库池。
来自官方文档:
连接池是由驱动程序维护的数据库连接的缓存,以便在需要与数据库的新连接时可以重新使用连接。 为了减少您的应用程序创建的连接池的数量,我们建议一次调用MongoClient.connect并重用回调返回的数据库变量:
这是一个示例,显示如何创建一次连接并重新使用该连接:
var MongoClient = require('mongodb').MongoClient;
var db;
// Initialize connection once
MongoClient.connect("mongodb://localhost:27017/integration_test", function(err, database) {
if(err) throw err;
db = database;
// Start the application after the database connection is ready
app.listen(3000);
console.log("Listening on port 3000");
});
// Reuse database object in request handlers
app.get('/',(req,res)=>{
db.collection('collection_name',(err,docs)=>{
err ? console.log(`Error: ${err}`) :
res.json(docs);
});
});
});
有关更多信息,请阅读mongodb-native官方文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.