$ sudo apt-get install python-software-properties
$ sudo add-apt-repository ppa:chris-lea/node.js
$ sudo apt-get update
$ sudo apt-get install nodejs
建立 project:
$ cd project
$ npm install mongodb
$ vim test.js
var Db = require('mongodb').Db,
MongoClient = require('mongodb').MongoClient;
var db_host = 'localhost';
var db_port = 27017;
var auth_db = 'admin';
var auth_name = 'account';
var auth_pass = 'password';
MongoClient.connect("mongodb://"+auth_name+":"+auth_pass+"@"+db_host+":"+db_port, function(err, db) {
console.log(err);
console.log(db.databaseName);
db.close();
});
MongoClient.connect("mongodb://"+db_host+":"+db_port, function(err, db) {
db.authenticate(auth_name, auth_pass, function(err, ret) {
console.log(err);
console.log(db.databaseName);
console.log(ret);
db.close();
});
});
$ node test.js
Failed to load c++ bson extension, using pure JS version
null
admin
null
admin
true
以上為兩種跟 mongodb 進行認證的方式,一種是寫在 URI 中,另一種則是透過 db.authenticate 方式,至於這份程式的輸出不見得 "true" 是在最後一列,也有可能在第三列,這是因為 node.js async 架構關係,在這份 code 中不保證哪個 function 先跑。
如果 mongodb 本身要求認證,而未認證則會有錯誤訊息:
{ [MongoError: unauthorized] name: 'MongoError', ok: 0, errmsg: 'unauthorized' }
比較疑惑的地方是對於 auth_db 的部分,之前在用 pymongo 時,或是直接用 mongo 指令時,必須透過指定 authenticationDatabase 才能通過認證,但在 node.js 中,似乎沒有問題?再來摸看看好了。
沒有留言:
張貼留言