簡體   English   中英

Node.js中的每個模塊都需要一個公共的mongodb連接

[英]Need a common mongodb connection for every module in nodejs

我正在使用不同的模塊來完成一項任務。

對於每個模塊,我都需要一個公共的mongodb連接。

我如何在某些模塊中編寫和使用它,因為在其他一些模塊中也需要db連接...

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
var dbo;
MongoClient.connect(url, function(err, db) {
  if (err) throw err;
  dbo = db.db("mydb");
});

router.post('/', function(req, res) {

    dbo.collection("customers").find({"userid":req.body.userid}).toArray(function(err, result) {
    if (err) throw err;
    if(result.length>0){
        res.send("username already taken please enter differnt username ")
    }

    else if(req.body.fname==undefined||(!validator.isAlpha(req.body.fname))){
    res.send("please enter only alphabets as fname ")
   }

   else if(req.body.lname==undefined||(!validator.isAlpha(req.body.lname))){
    res.send("please enter only alphabets as lname ")
   }

   else if(req.body.userid==undefined||(!validator.isAlphanumeric(req.body.userid))){
    res.send("please enter only alphanemric as user name ")
   }

    else if(req.body.pwd==undefined||req.body.pwd.length<6){
    res.send("please enter atleast  6 charcaters as password ")
   }

   else{
            var bcrypt = require('bcryptjs');
            var salt = bcrypt.genSaltSync(10);
            var hash = bcrypt.hashSync(req.body.pwd, salt);
            req.body.pwd=hash;


        dbo.collection("customers").insertOne(req.body, function(err, res) {
        if (err) throw err;
        console.log("1 document inserted");
        });
        res.send(req.body);
    }

 });


    });



module.exports = router;

use可以使用節點導出和導入,也可以在其他模塊中使用mongodb連接實例,假設dbo是要存儲mongodb連接的變量

export let dbo;
MongoClient.connect(url, function(err, db) {
if (err) throw err;
dbo = db.db("mydb");
});

您可以將db連接分配給dbo變量,並在所需的任何模塊中使用它

您必須為連接創建一個中間件,然后將db對象分配給您的請求對象(在您的情況下為req

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";

router.use( (req,res,next) => {
   MongoClient.connect(url, function(err, db) {
     if (err) throw err;
     req.dbo = db.db("mydb");
     next();
  });
})

在您的router.post("/", ...)您將執行req.dbo.collection(...)

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
var dbo=null;

exports.conection=function(){
    if(dbo!=null) return 

  MongoClient.connect(url, function(err, db) {
  if (err) throw err;
   dbo = db.db("mydb");


});
}


exports.get = function (){
    return dbo;
}

我嘗試過這個並且只要需要我就可以使用get方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM