如何通过node.js连接到mongodb(并进行身份validation)?
如何通过node.js连接到mongodb?
我有节点mongodb本地驱动程序。
显然有0文件。
这是这样的吗?
var mongo = require('mongodb/lib/mongodb'); var Db= new mongo.Db( dbname, new mongo.Server( 'mongolab.com', 27017, {}), {});
我在哪里把用户名和密码?
另外我该如何插入一些东西?
谢谢。
根据来源 :
连接后:
Db.authenticate(user, password, function(err, res) { // callback });
每个人都应该使用这个源链接:
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(); }); }); });
我发现使用Mongourl方便。 我将URL存储在一个环境variables中,并使用它来configuration服务器,而开发版本使用默认的URL而不使用密码。
该url的格式为:
export MONGODB_DATABASE_URL=mongodb://USERNAME:PASSWORD@DBHOST: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); } });
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....'); } });
我的版本:
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); }); });
我build议我刚刚创build的蒙古金 。
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同步? 诺普,它是asynchronous的。
这对我工作:
Db.admin().authenticate(user, password, function() {} );
你可以这样做
var db = require('mongo-lite').connect('mongodb://localhost/test')
更多细节 …
如果你继续有本地驱动程序的问题,你也可以检查出困mongoose。 这是一个Python REST服务器,您可以简单地通过节点请求访问您的Mongo实例。 http://www.snailinaturtleneck.com/blog/2010/02/22/sleepy-mongoose-a-mongodb-rest-interface/
通过@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); }); }); };
克里斯的答案轻微的错字。
Db.authenticate(user, password, function({ // callback }));
应该
Db.authenticate(user, password, function(){ // callback } );
另外,根据您的mongodbconfiguration,您可能需要先连接到pipe理员和身份validation,然后再转到其他数据库。 如果您不将用户添加到您尝试访问的数据库中,则会出现这种情况。 然后你可以通过pipe理authentication,然后切换分贝,然后读或写随意。
我正在使用Mongoose连接到MongoDB。 使用以下命令安装mongoose npm
npm安装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); });
这里是新的可以从“pipe理员”进行身份validation,然后切换到您想要的数据库进行进一步的操作:
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(); });