如何使用node.js连接mongodb(并进行身份验证)?

Mar*_*ark 71 javascript authentication connection mongodb node.js

如何使用node.js连接到mongodb?

我有node-mongodb-native驱动程序.

显然有0个文档.

这是这样的吗?

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

我在哪里输入用户名和密码?

另外我如何插入东西?

谢谢.

Chr*_*ald 43

根据来源:

连接后:

Db.authenticate(user, password, function(err, res) {
  // callback
});
Run Code Online (Sandbox Code Playgroud)

  • 我无法相信这个答案在语法错误方面得到了很大的反响......回调定义不明确.请参阅下面的解决方案和更合适的源代码链接:http://stackoverflow.com/a/15191273/1060487 (6认同)

mat*_*yer 34

每个人都应该使用这个源链接:

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();
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

  • 为什么总是将用户添加到数据库中? (4认同)

Vir*_*tel 15

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

      }
    });
Run Code Online (Sandbox Code Playgroud)


jus*_*nhj 9

我发现使用Mongo url方便.我将URL存储在环境变量中,并使用它来配置服务器,而开发版本使用没有密码的默认URL.

该URL具有以下形式:

export MONGODB_DATABASE_URL=mongodb://USERNAME:PASSWORD@DBHOST:DBPORT/DBNAME
Run Code Online (Sandbox Code Playgroud)

以这种方式连接的代码:

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);
          }
      });    
Run Code Online (Sandbox Code Playgroud)

  • 如果用户位于 DBNAME 以外的其他数据库中(如 admin),则必须将选项 `?authSource=admin` 添加到 URL。 (2认同)

Vla*_*pak 6

我的版本:

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);
    });
});
Run Code Online (Sandbox Code Playgroud)