Comment puis-je me connecter à mongodb avec node.js (et authentifier)?

Comment puis-je me connecter à mongodb avec node.js?

J'ai le pilote nœud-mongodb-native.

Il y a apparemment 0 documentation.

Est-ce quelque chose comme ça?

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

Où puis-je mettre le nom d'utilisateur et le mot de passe?

Aussi, comment puis-je insérer quelque chose?

Merci.

Par source :

Après la connexion:

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

Tout le monde devrait utiliser ce lien source:

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

Réponse à la question:

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

Je trouve que l'utilisation d'une URL Mongo est pratique. Je stocke l'URL dans une variable d'environnement et j'utilise celle pour configurer des serveurs tandis que la version de développement utilise une URL par défaut sans mot de passe.

L'URL a le formulaire:

 export MONGODB_DATABASE_URL=mongodb://USERNAME:PASSWORD@DBHOST:DBPORT/DBNAME 

Code pour se connecter de cette façon:

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

Ma version:

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

Je recommande mongoskin que je viens de créer.

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

La synchronisation de mongoskin? Nop, c'est asynchrone.

Cela a fonctionné pour moi:

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

Vous pouvez le faire comme ça

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

plus de détails …

Si vous continuez à avoir des problèmes avec le pilote natif, vous pouvez également consulter la mangeoire endormie. C'est un serveur python REST que vous pouvez simplement accéder avec une requête de nœud pour accéder à votre instance de Mongo. http://www.snailinaturtleneck.com/blog/2010/02/22/sleepy-mongoose-a-mongodb-rest-interface/

Avec le lien fourni par @mattdlockyer comme référence, cela a fonctionné pour moi:

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

Légère erreur de frappe avec la réponse de Chris.

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

devrait être

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

De plus, selon votre configuration de mongodb, vous devrez peut-être vous connecter à admin et auth avant d'aller à une base de données différente. Ce sera le cas si vous n'ajoutez pas d'utilisateur à la base de données à laquelle vous tentez d'accéder. Ensuite, vous pouvez auth via admin, puis changez db, puis lisez ou écrivez à volonté.

J'utilise Mongoose pour me connecter à mongodb. Installez mongoose npm en utilisant la commande suivante

Npm installer la mangouste

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

Nous pouvons utiliser les requêtes comme celle-ci

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