Comment se connecter à mongodb avec node.js?
J'ai le pilote node-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ù dois-je mettre le nom d'utilisateur et le mot de passe?
Aussi, comment insérer quelque chose?
Merci.
Per la 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();
});
});
});
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....');
}
});
Je trouve utile d'utiliser une URL Mongo. Je stocke l'URL dans une variable d'environnement et l'utilise pour configurer des serveurs tandis que la version de développement utilise une URL par défaut sans mot de passe.
L'URL a la forme:
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);
}
});
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);
});
});
Cela a fonctionné pour moi:
Db.admin().authenticate(user, password, function() {} );
Je recommande mongoskin 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
});
Mongoskin est-il sync? Non, c'est asynchrone.
Tu peux le faire comme ça
var db = require('mongo-lite').connect('mongodb://localhost/test')
Voici une nouvelle possibilité pour vous authentifier à partir de "admin" puis basculez vers votre base de données souhaitée pour effectuer d'autres opérations:
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();
});
si vous continuez à avoir des problèmes avec le pilote natif, vous pouvez également consulter la mangouste somnolente. C’est un serveur python REST] auquel vous pouvez simplement accéder avec une requête de nœud pour accéder à votre instance 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 faute de frappe avec la réponse de Chris.
Db.authenticate(user, password, function({ // callback }));
devrait être
Db.authenticate(user, password, function(){ // callback } );
De plus, en fonction de votre configuration mongodb, vous devrez peut-être vous connecter à admin et y être autorisé avant de passer à une autre base de données. Ce sera le cas si vous n'ajoutez pas d'utilisateur à la base de données à laquelle vous essayez d'accéder. Ensuite, vous pouvez authentifier via admin puis changer de base de données puis lire ou écrire à volonté.