Как подключиться к mongodb с помощью node.js(и аутентифицироваться)?

Как подключиться к mongodb с помощью node.js?

У меня есть родной драйвер node -mongodb.

Там, по-видимому, имеется документация.

Это что-то вроде этого?

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

Где я могу поместить имя пользователя и пароль?

Также как мне вставить что-то?

Спасибо.

Ответ 1

Per источник:

После подключения:

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

Ответ 2

Каждый должен использовать эту ссылку:

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

Отвечайте на вопрос:

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();
    });
  });
});

Ответ 3

Я использую Mongo url. Я сохраняю URL-адрес в переменной среды и использую его для настройки серверов, в то время как версия разработки использует URL-адрес по умолчанию без пароля.

URL-адрес имеет форму:

export MONGODB_DATABASE_URL=mongodb://USERNAME:[email protected]:DBPORT/DBNAME

Код для подключения следующим образом:

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);
          }
      });    

Ответ 4

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....');

      }
    });

Ответ 5

Моя версия:

var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://user:[email protected]:port/baseName', function(err, db) {
    if (err) {
        console.error(err);
    }
    var collection = db.collection('collectionName');
    collection.find().toArray(function(err, docs) {
        console.log(docs);
    });
});

Ответ 6

Я рекомендую mongoskin Я только что создал.

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

Является ли монгоскинская синхронизация? Nop, это асинхронно.

Ответ 7

Это сработало для меня:

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

Ответ 8

Вы можете сделать это так:

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

подробнее...

Ответ 9

если у вас по-прежнему возникают проблемы с родным драйвером, вы также можете проверить сонный мангуст. Это сервер REST python, с которым вы можете просто получить доступ с запросом node, чтобы добраться до вашего экземпляра Mongo. http://www.snailinaturtleneck.com/blog/2010/02/22/sleepy-mongoose-a-mongodb-rest-interface/

Ответ 10

С ссылкой, предоставленной @mattdlockyer как ссылкой, это сработало для меня:

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);
        });
    });
};

Ответ 11

Незначительная опечатка с ответом Криса.

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

должен быть

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

Кроме того, в зависимости от конфигурации вашего mongodb вам может потребоваться сначала подключиться к admin и auth, прежде чем перейти в другую базу данных. Это будет иметь место, если вы не добавите пользователя в базу данных, к которой вы пытаетесь получить доступ. Затем вы можете выполнить авторизацию через admin, а затем переключить db, а затем читать или писать по своему усмотрению.

Ответ 12

Я использую Mongoose для подключения к mongodb. Установите mongoose npm, используя следующую команду

npm install mongoose

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/database_name', function(err){
    if(err){
        console.log('database not connected');
    }
});
var Schema = mongoose.Schema;
var userschema = new Schema ({});
var user = mongoose.model('collection_name', userschema);

мы можем использовать такие запросы, как

user.find({},function(err,data){
         if(err){
         console.log(err);
         }
        console.log(data);
    });

Ответ 13

Здесь может появиться новая возможность аутентификации с "admin", а затем перейти на требуемую БД для дальнейших операций:

   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();

});