在撰寫程式或工具的時候難免需要使用到資料庫來作資料的存放、讀取等,
而在Node.js世界中常常會看到Mongodb的名字。
mongodb是一個NoSQL(Not Only SQL)的Database,屬於文件導向的資料庫,利用JSON格式,將一份(筆)文件存放至DB中,由於JSON格式的特性,在同一個Document(Table)中,可以存放不同數量屬性的資料於同一份文件中,可以不用事先定義好資料欄位。
mongolab提供了免費的方案,限制容量大小500MB,但開發練習等個人使用的話,已經非常夠用了。
但您也可以到mongodb的官網下載安裝,只需要將下面介紹的資料庫存取url改成本機的即可。
首先至mongolab官網註冊帳號
登入後可以看到類似以下的畫面,接著建立一個新的資料庫
接著選擇Single-node下的500MB方案(免費!!),並填寫此資料庫的名稱,點選建立即完成資料庫的建置。
接下來點選您新建立的資料庫來進行資料庫存取帳號密碼的設定,示範所設定的帳號密碼為admin/123。
這樣就完成資料庫的建置與設定了,可以看到畫面上方有連置資料庫的URL,已這裡的範例來看,資料庫URL為
mongodb://admin:123@ds035563.mongolab.com:35563/howardtest
接下來就可以回到Node.js,開始寫程式囉!
第一步,利用npm安裝mongodb以及assert兩個Node.js套件,mongodb即為Node.js使用mongodb的driver,而assert即為驗證用的套件。
接著,建立app.js來連結mongodb。
var MongoClient = require('mongodb').MongoClient
, assert = require('assert');
// Connection URL
var url = 'mongodb://admin:123@ds035563.mongolab.com:35563/howardtest';
MongoClient.connect(url, function (err, db) {
assert.equal(null, err);
console.log("Connected correctly to server");
});
成功連上資料庫後接下來就是來定義新增資料的方法啦!
var insertDocuments = function (db, callback) {
var collection = db.collection('userProfile');
collection.insert([{name: 'Howard', age: 25 },
{name: 'Smilee', age: 18}],
function (err, result) {
assert.equal(err, null);
assert.equal(2, result.result.n);
assert.equal(2, result.ops.length);
console.log("Inserted 2 documents into the userProfile collection\n");
callback(result);
});
}
collection可以想像成類似SQL資料庫的Table,而在mongodb中可以不用事先定義collection,當執行新增後就會自行的新增該份collection。
再來就是定義讀取資料庫中資料的方法!
var findDocuments = function (db, callback) {
// Get the documents collection
var collection = db.collection('userProfile');
// Find some documents
collection.find({}).toArray(function (err, docs) {
callback(docs);
});
}
在取得資料find()方法中也可以加入條件來做查詢,例如:collection.find({name: 'Howard'}),這樣就會只查詢name為Howard的資料出來。
這些都完成後,就可以回到連接資料庫的方法中來使用這兩個方法。
MongoClient.connect(url, function (err, db) {
assert.equal(null, err);
console.log("Connected correctly to server");
insertDocuments(db, function () {
findDocuments(db, function (docs) {
console.log("Found the following records");
for (var i in docs) {
console.log(docs[i].name + " is " + docs[i].age + " years old.");
}
db.close();
});
});
});
這樣就完成針對mongodb簡單的寫入與讀取了。
整個程式的流程為成功連上資料庫後新增兩筆資料,完成新增資料後再執行讀取方法取得資料庫中的資料。
嘿嘿~看來有了mongodb說不定就可以讓我的聊天室增加記錄訊息的功能了!!







沒有留言:
張貼留言