1. 程式人生 > >基於nodejs和mongodb的伺服器&資料庫訪問

基於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檔案模組,這裡不做闡述。