基於nodejs和mongodb的伺服器&資料庫訪問
可以直接跳過一~四,直接閱讀五,若有疑惑,可返回閱讀。
一、為什麼使用nodejs和mongodb:
nodejs和mongodb與JavaScript的語言風格非常的相似,基本上會使用JavaScript,mongodb和nodejs的用法也會迅速掌握。
二、如何搭建資料庫管理系統:
當安裝完mongodb後,輸入cmd指令開啟終端,在bin目錄下執行
//開啟資料庫伺服器
mongod --dbpath C:/desktop/database //資料庫路徑
//連線至資料庫管理系統
mongo
這樣就在本地搭建了資料庫管理系統,資料庫位於C:/desktop/database。
連線成功會顯示資料庫的埠號:
三、js文件中如何連線資料庫:
var MongoClient = require("mongodb").MongoClient;
var dataurl = "mongodb://localhost:27017/";
var dbase, userdata;
function makeConnect() {
MongoClient.connect(dataurl, function(err, db) {
if (err) throw err;
console.log("資料庫已經建立!");
//db引數為資料庫管理系統
})
})
}
exports.makeConnect = makeConnect;
dataurl是資料庫的埠號,通過db.db(“user_Data_Name”)方法來呼叫指定的資料庫。
四、如何搭建伺服器:
伺服器需要在nodejs環境下執行,請事先下載並且安裝nodejs執行環境
我們將伺服器的構建分成3步:
1、引入 required 模組:我們可以使用 require 指令來載入 Node.js 模組。
2、建立伺服器:伺服器可以監聽客戶端的請求,類似於 Apache 、Nginx 等 HTTP 伺服器。
3、接收請求與響應請求 伺服器很容易建立,客戶端可以使用瀏覽器或終端傳送 HTTP 請求,伺服器接收請求後返回響應資料。
程式碼如下:
var http = require("http");
var fs = require("fs");
var url = require("url");
function start(router, handlers, dbbase) {
http.createServer(function(request, response) {
//伺服器構建完畢
//此處可解析request,並且呼叫路由模組分配處理函式
}).listen(8080);
console.log("server is open on 8080");
}
exports.start = start;
http、fs、url是nodejs中的固有模組,若無法require,請在指令終端(cmd開啟)的C盤根目錄下執行npm install http,npm install fs,npm install url操作。
五、如何連線資料庫和伺服器
通過非同步回撥機制,先連線資料庫,然後再通過回撥函式進行構建伺服器,並且將對應是資料庫物件作為引數傳入伺服器中。
注意到上文兩處程式碼引用都有出現exports,這意味著該js檔案,可以被其他檔案進行require,並且exprots中的方法,將可作為模組方法被呼叫。
我們另寫一個index.js檔案,作為總綱,在對應的資料夾下執行node index,便可連線資料庫。
重寫以上程式碼如下:
//連線資料庫的程式碼,creatData.js檔案
var MongoClient = require("mongodb").MongoClient;
var dataurl = "mongodb://localhost:27017/";
var dbase, userdata;
function makeConnect(buildServer) {
MongoClient.connect(dataurl, function(err, db) {
if (err) throw err;
console.log("資料庫已經建立!");
//本人事先建立了studentData資料庫,且資料庫中有studentNumber集合。
dbase = db.db("studentData");
dbase.createCollection("studentNumber", function(err, res) {
if (err) throw err;
console.log("studentNumber集合已經建立!");
//使用回撥函式
buildServer(dbase);
})
})
}
exports.makeConnect = makeConnect;
//構建伺服器的程式碼,server.js檔案
var http = require("http");
var fs = require("fs");
var url = require("url");
function start(dbbase) {
http.createServer(function(request, response) {
}).listen(8080);
console.log("server is open on 8080");
}
exports.start = start;
//index.js檔案
var server = require("./server/server.js");
var createData = require("./datajs/creatData.js");
createData.makeConnect(function buildServer(dbbase) {
server.start(dbbase);
})
如果讀者想賦予伺服器更多的功能,可以在server.js中引用自己的路由js檔案模組和處理函式js檔案模組,這裡不做闡述。