Javascript 如何使用node.js连接到mongodb(并进行身份验证)?
如何使用node.js连接到mongodb 我有节点mongodb本机驱动程序 显然有0个文档 是这样的吗Javascript 如何使用node.js连接到mongodb(并进行身份验证)?,javascript,node.js,mongodb,authentication,connection,Javascript,Node.js,Mongodb,Authentication,Connection,如何使用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,
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
});
如果本机驱动程序仍然存在问题,也可以查看sleepy mongoose。它是一个python REST服务器,您只需通过节点请求访问它即可访问Mongo实例。 我推荐我刚刚创建的
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同步吗?不,它是异步的。这对我来说很有效:
Db.admin().authenticate(user, password, function() {} );
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);
});
});
};
你可以这样做
var db = require('mongo-lite').connect('mongodb://localhost/test')
克里斯的回答有轻微的打字错误
Db.authenticate(user, password, function({ // callback }));
应该是
Db.authenticate(user, password, function(){ // callback } );
另外,根据mongodb配置的不同,您可能需要先连接到管理员并在那里进行身份验证,然后再转到其他数据库。如果您不向试图访问的数据库添加用户,则会出现这种情况。然后你可以通过管理员进行身份验证,然后切换数据库,然后随意读写。我发现使用Mongo url很方便。我将URL存储在一个环境变量中,并使用它来配置服务器,而开发版本使用一个没有密码的默认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 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();
});
});
});
通过@mattdlockyer提供的链接作为参考,这对我很有用:
Db.admin().authenticate(user, password, function() {} );
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);
});
});
};
我正在使用Mongoose连接mongodb。 使用以下命令安装mongoose npm 安装猫鼬 我们可以使用这样的查询
user.find({},function(err,data){
if(err){
console.log(err);
}
console.log(data);
});
我的版本:
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);
});
});
以下是从“管理员”处进行身份验证的新方法,然后切换到所需的数据库进行进一步操作:
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();
});
我真不敢相信这个答案竟然因为语法错误而被如此高估。。。回调定义不正确。请参阅下面的“我的解决方案”和“更合适的源代码”链接:我第一次尝试了这个方法,但它不起作用,但那是因为我用错了。我在管理中使用了我用户的凭据。我专门为数据库创建了一个用户,并使用了这些凭据。工作得很有魅力。谢谢从驱动程序版本3.1起,Db不再具有身份验证方法。为什么你总是将用户添加到数据库?这是一个例子,从我发布的《驾驶员手册》链接复制而来。。。连接方法是有用的部分,仅供参考,希望能对大家有所帮助。。这不起作用,因为
null!={}
此检查失败:断言.equal(null,err)代码>也许手动示例现在已经过时,并且有一个更新版本的Mongo,感谢您提供的信息!我喜欢这个图书馆。元素可以进行一些回调。甚至比mongo Skin更合适,这是一个很好的开始,也就是说,我正在编写合适的文档,因为我们正在为v1版本的驱动程序说话,这将是第一个官方支持的10gen版本。如果用户位于DBNAME以外的另一个数据库中(如admin),则必须在URL中添加选项?authSource=admin
。完美。。。谢谢你刚刚离开了连接运算符“@”+DATABASEHOST+:“+DATABASEPORT@VirtualPateldoes在新版本的驱动程序上不起作用。db.authenticate()方法不再存在。至少,我正在使用的node.js 3.1驱动程序中不存在该文件。在Node Inspector控制台中出现“db.authenticate不是函数”错误。这只是db的连接名称。