Node.js 在没有mongoose的情况下,如何使用express连接到mongodb?

Node.js 在没有mongoose的情况下,如何使用express连接到mongodb?,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我使用的是express框架,希望不使用mongoose连接到mongodb,而是使用本机nodejs mongodb驱动程序。如何在每次不创建新连接的情况下执行此操作 为了处理get或post请求,我当前为每个请求打开一个到db的新连接,并在请求完成时关闭它。有更好的方法吗?提前感谢。遵循我评论中的示例,对其进行修改,以便应用程序处理错误,而不是无法启动服务器 var express = require('express'); var mongodb = require('mongodb');

我使用的是express框架,希望不使用mongoose连接到mongodb,而是使用本机nodejs mongodb驱动程序。如何在每次不创建新连接的情况下执行此操作


为了处理get或post请求,我当前为每个请求打开一个到db的新连接,并在请求完成时关闭它。有更好的方法吗?提前感谢。

遵循我评论中的示例,对其进行修改,以便应用程序处理错误,而不是无法启动服务器

var express = require('express');
var mongodb = require('mongodb');
var app = express();

var MongoClient = require('mongodb').MongoClient;
var db;

// Initialize connection once
MongoClient.connect("mongodb://localhost:27017/integration_test", function(err, database) {
  if(err) return console.error(err);

  db = database;

  // the Mongo driver recommends starting the server here because most apps *should* fail to start if they have no DB.  If yours is the exception, move the server startup elsewhere. 
});

// Reuse database object in request handlers
app.get("/", function(req, res, next) {
  db.collection("replicaset_mongo_client_collection").find({}, function(err, docs) {
    if(err) return next(err);
    docs.each(function(err, doc) {
      if(doc) {
        console.log(doc);
      }
      else {
        res.end();
      }
    });
  });
});

app.use(function(err, req, res){
   // handle error here.  For example, logging and returning a friendly error page
});

// Starting the app here will work, but some users will get errors if the db connection process is slow.  
  app.listen(3000);
  console.log("Listening on port 3000");

在一个文件中添加这个片段,比如connect.js,然后在您声明http请求函数的文件中需要这个文件(connect.js)。

我不知道您每次都必须真正打开一个新连接。签出,但在这种情况下,如果无法建立到db的连接,则输出服务器本身将不会启动。基本模式仍然有效。我会继续回答这个问题。但是这个代码段每次都会发出一个新的连接请求,这是我们不想看到的。我认为这是正确的方法,即在发出http请求之前检查连接是否已建立。我相信需要这个代码段会缓存在应用程序中而且它不会每次都提出新的请求。如果我用的是猫鼬怎么办?@SudhirKaushik如果你用的是猫鼬怎么办?这个问题的答案是“没有猫鼬,我该怎么做”。当你回头看你的答案,觉得“我本可以用更好的方式说”时,你会觉得很尴尬。无论如何,我上面的问题有点自私,因为我试图用猫鼬来设置。应该用另一个问题提问。Nevermind@SudhirKaushik退房有大量使用猫鼬的教程。谢谢Paul,分享这个片段。
var mongodb = require('mongodb');
var uri = 'mongodb://localhost:27017/dbname';

module.exports = function(callback) {
  mongodb.MongoClient.connect(uri, callback);
};