web-dev-qa-db-fra.com

Comment se connecter à mongodb avec node.js (et s'authentifier)?

Comment se connecter à mongodb avec node.js?

J'ai le pilote node-mongodb-native.

Il y a apparemment 0 documentation.

Est-ce quelque chose comme ça?

var mongo = require('mongodb/lib/mongodb'); 
var Db= new mongo.Db( dbname, new mongo.Server( 'mongolab.com', 27017, {}), {}); 

Où dois-je mettre le nom d'utilisateur et le mot de passe?

Aussi, comment insérer quelque chose?

Merci.

70
Mark

Per la source :

Après la connexion:

Db.authenticate(user, password, function(err, res) {
  // callback
});
42
Chris Heald

Tout le monde devrait utiliser ce lien source:

http://mongodb.github.com/node-mongodb-native/contents.html

Réponse à la question:

var Db = require('mongodb').Db,
    MongoClient = require('mongodb').MongoClient,
    Server = require('mongodb').Server,
    ReplSetServers = require('mongodb').ReplSetServers,
    ObjectID = require('mongodb').ObjectID,
    Binary = require('mongodb').Binary,
    GridStore = require('mongodb').GridStore,
    Code = require('mongodb').Code,
    BSON = require('mongodb').pure().BSON,
    assert = require('assert');

var db = new Db('integration_tests', new Server("127.0.0.1", 27017,
 {auto_reconnect: false, poolSize: 4}), {w:0, native_parser: false});

// Establish connection to db
db.open(function(err, db) {
  assert.equal(null, err);

  // Add a user to the database
  db.addUser('user', 'name', function(err, result) {
    assert.equal(null, err);

    // Authenticate
    db.authenticate('user', 'name', function(err, result) {
      assert.equal(true, result);

      db.close();
    });
  });
});
35
mattdlockyer
var mongo = require('mongodb');
var MongoClient = mongo.MongoClient;    
MongoClient.connect('mongodb://'+DATABASEUSERNAME+':'+DATABASEPASSWORD+'@'+DATABASEHOST+':'DATABASEPORT+'/'+DATABASENAME,function(err, db){  
      if(err) 
        console.log(err);
      else
      {
        console.log('Mongo Conn....');

      }
    });
//for local server 
//in local server DBPASSWOAD and DBusername not required
MongoClient.connect('mongodb://'+DATABASEHOST+':'+DATABASEPORT+'/'+DATABASENAME,function(err, db){  
      if(err) 
        console.log(err);
      else
      {
        console.log('Mongo Conn....');

      }
    });
15
Viral Patel

Je trouve utile d'utiliser une URL Mongo. Je stocke l'URL dans une variable d'environnement et l'utilise pour configurer des serveurs tandis que la version de développement utilise une URL par défaut sans mot de passe.

L'URL a la forme:

export MONGODB_DATABASE_URL=mongodb://USERNAME:PASSWORD@DBHOST:DBPORT/DBNAME

Code pour se connecter de cette façon:

var DATABASE_URL = process.env.MONGODB_DATABASE_URL || mongodb.DEFAULT_URL;

mongo_connect(DATABASE_URL, mongodb_server_options, 
      function(err, db) { 

          if(db && !err) {
          console.log("connected to mongodb" + " " + lobby_db);
          }
          else if(err) {
          console.log("NOT connected to mongodb " + err + " " + lobby_db);
          }
      });    
8
justinhj

Ma version:

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://user:pass@dhost:port/baseName', function(err, db) {
    if (err) {
        console.error(err);
    }
    var collection = db.collection('collectionName');
    collection.find().toArray(function(err, docs) {
        console.log(docs);
    });
});
5
Vladimir Kovpak

Cela a fonctionné pour moi:

Db.admin().authenticate(user, password, function() {} );
3
InspiredJW

Je recommande mongoskin Je viens de créer.

var mongo = require('mongoskin');
var db = mongo.db('admin:pass@localhost/mydb?auto_reconnnect');
db.collection('mycollection').find().toArray(function(err, items){
   // do something with items
});

Mongoskin est-il sync? Non, c'est asynchrone.

3
guilin 桂林

Tu peux le faire comme ça

var db = require('mongo-lite').connect('mongodb://localhost/test')

plus de détails ...

2
Alexey Petrushin

Voici une nouvelle possibilité pour vous authentifier à partir de "admin" puis basculez vers votre base de données souhaitée pour effectuer d'autres opérations:

   var MongoClient = require('mongodb').MongoClient;
var Db = require('mongodb').Db, Server = require('mongodb').Server ,
    assert = require('assert');

var user = 'user';
var password = 'password';

MongoClient.connect('mongodb://'+user+':'+password+'@localhost:27017/opsdb',{native_parser:true, authSource:'admin'}, function(err,db){
    if(err){
        console.log("Auth Failed");
        return;
    }
    console.log("Connected");
    db.collection("cols").find({loc:{ $eq: null } }, function(err, docs) {
        docs.each(function(err, doc) {
          if(doc) {
            console.log(doc['_id']);
          }
        });
    });

    db.close();

}); 
1
jolly

si vous continuez à avoir des problèmes avec le pilote natif, vous pouvez également consulter la mangouste somnolente. C’est un serveur python REST] auquel vous pouvez simplement accéder avec une requête de nœud pour accéder à votre instance Mongo. http: //www.snailinaturtleneck. com/blog/2010/02/22/sleepy-mongoose-a-mongodb-rest-interface /

1
Ray

Avec le lien fourni par @mattdlockyer comme référence, cela a fonctionné pour moi:

var mongo = require('mongodb');
var server = new mongo.Server(Host, port, options);
db = new mongo.Db(mydb, server, {fsync:true});
db.open(function(err, db) {
    if(!err) {
        console.log("Connected to database");
        db.authenticate(user, password, function(err, res) {
            if(!err) {
                console.log("Authenticated");
            } else {
                console.log("Error in authentication.");
                console.log(err);
            }
        });
    } else {
        console.log("Error in open().");
        console.log(err);
    };
});

exports.testMongo = function(req, res){
    db.collection( mycollection, function(err, collection) {
        collection.find().toArray(function(err, items) {
            res.send(items);
        });
    });
};
1
RVC

Légère faute de frappe avec la réponse de Chris.

Db.authenticate(user, password, function({ // callback }));

devrait être

Db.authenticate(user, password, function(){ // callback } );

De plus, en fonction de votre configuration mongodb, vous devrez peut-être vous connecter à admin et y être autorisé avant de passer à une autre base de données. Ce sera le cas si vous n'ajoutez pas d'utilisateur à la base de données à laquelle vous essayez d'accéder. Ensuite, vous pouvez authentifier via admin puis changer de base de données puis lire ou écrire à volonté.

0
earlonrails