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, {}), {});
ユーザー名とパスワードはどこに入力しますか?
また、どうすれば挿入できますか?
ありがとう。
誰もがこのソースリンクを使用する必要があります。
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();
});
});
});
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....');
}
});
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 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);
});
});
これは私のために働いた:
Db.admin().authenticate(user, password, function() {} );
mongoskin 作成したばかりです。
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
});
モンゴスキンは同期していますか?いいえ、非同期です。
「admin」から認証し、さらに操作を行うために希望のDBに切り替える新しい方法があります。
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();
});
ネイティブドライバーで引き続き問題が発生する場合は、眠そうなマングースも確認できます。これは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 } );
また、mongodbの構成によっては、別のデータベースに移動する前に、まずadminに接続してそこで認証する必要がある場合があります。これは、アクセスしようとしているデータベースにユーザーを追加しない場合に当てはまります。その後、adminを介して認証し、dbを切り替えてから、自由に読み書きできます。