node服務端搭建學習筆記

咳咳,終於邁出這一步了...這篇文章將是邊學邊寫的真正筆記...用於mark下學習過程當中的點滴~node

開篇先把我學習參考的文章來源給出,以表示對前人的尊敬:git

https://github.com/nswbmw/N-blog/wiki/_pagesgithub

 

Step01mongodb

首先,先安裝一堆東西,固然我默認的已經把 node 給裝好了,接下來要安裝的,是項目開發過程當中用到的東東~數據庫

至於下面裝的是什麼東東,不知道的本身百度去,這種概念性問題不在筆記之列。express

 

全局安裝 expressnpm

install -g express-generator

 

全局安裝 supervisorjson

npm install -g supervisor

 

下載並安裝 mongoDB瀏覽器

官網地址:https://www.mongodb.org/downloadscookie

mongoDB 也有可視化工具,名爲 Robomongo,官網地址:http://www.robomongo.org/

 

 

Step02

上面幾個玩意都安裝好後,環境已備,能夠開始碼字了。

先建立一個 express 項目吧,在你想建立項目的目錄下執行下面命令(projectName 是你要建立的項目名稱):

express -e projectName

 

項目建立後,進入剛建好的項目根目錄,執行

npm install

安裝項目依賴的 node 模塊

 

等模塊安裝好以後,你就能夠執行下面的命令,運行項目程序了

supervisor ./bin/www

執行上面命令後,打開瀏覽器,在地址欄中輸入 http://127.0.0.1:3000/ 而後看到瀏覽器裏顯示 Express 的歡迎界面,說明項目建立運行成功。

 

 

Step03

接下來,咱們要連接數據庫,並嘗試數據寫入和數據讀取

首先,咱們先在項目根目錄找到 package.json 文件

而後打開文件,找到 dependencies 在加上下面幾個項目依賴模塊

"bson": "~0.4.19", "connect-flash": "~0.1.1", "connect-mongo": "~0.4.1", "express-session": "~1.9.1", "mongodb": "~1.4.15"

而後再執行

npm install

安裝上面添加的幾個依賴模塊

 

打開 app.js 將它修改爲以下:

var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var routes = require('./routes/index'); var session = require('express-session'); var MongoStore = require('connect-mongo')(session); var flash = require('connect-flash'); var app = express(); //設置模版引擎
app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.set(flash()); //設置標題欄小圖標
//app.use(favicon(path.join(__dirname, 'favicon.ico'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: false})); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); routes(app); //404異常處理
app.use(function (req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); //打印錯誤信息
app.use(function (err, req, res, next) { res.status(err.status || 500); res.render('error', { message: err.message, error: {} }); }); module.exports = app;

 

而後打開 routes/index.js 將它修改爲以下:

var User = require('../modules/user'); module.exports = function(app) { app.get('/', function (req, res, next) { res.render('index', { title: 'Express' }); }); app.get('/saveUser', function (req, res, next) { User.save({ name: 'Mike', password: '123456', email: 'qwe@163.com' }, function (err, user) { res.send('保存用戶數據成功!'); }); }); app.get('/getUser', function (req, res, next) { User.get('Mike', function (err, user) { res.send({ email: user.email }); }); }); };

 

routes/users.js 已經無用,能夠刪掉。

接下來,在根目錄下建立一個 modules 目錄,而後在 modules 目錄下再建立一個 dataService 目錄,全部和數據操做相關的 js 模塊都將放在 modules/dataService 目錄下

接下來,在 modules/dataService 下建立兩個文件 conn.js 和 user.js

 

conn.js 的代碼以下:

var settings = { cookieSecret: 'myProject', db: 'dataBaseName', host: 'localhost', port: 27017 }, mongodb = require('mongodb'), Db = mongodb.Db, Server = mongodb.Server; module.exports = new Db(settings.db, new Server(settings.host, settings.port), { safe: true });

 

user.js 的代碼以下:

var mongodb = require('./conn'); var User = {}; //存儲用戶信息
User.save = function (opts, callback) { //要存入數據庫的用戶文檔
    var user = { name: opts.name, password: opts.password, email: opts.email }; //打開數據庫
    mongodb.open(function (err, db) { if (err) { return callback(err);//錯誤,返回 err 信息
 } //讀取 users 集合
        db.collection('users', function (err, collection) { if (err) { mongodb.close(); return callback(err);//錯誤,返回 err 信息
 } //將用戶數據插入 users 集合
 collection.insert(user, { safe: true }, function (err, user) { mongodb.close(); if (err) { return callback(err);//錯誤,返回 err 信息
 } callback(null, user[0]);//成功!err 爲 null,並返回存儲後的用戶文檔
 }); }); }); }; //讀取用戶信息
User.get = function (name, callback) { //打開數據庫
    mongodb.open(function (err, db) { if (err) { return callback(err);//錯誤,返回 err 信息
 } //讀取 users 集合
        db.collection('users', function (err, collection) { if (err) { mongodb.close(); return callback(err);//錯誤,返回 err 信息
 } //查找用戶名(name鍵)值爲 name 一個文檔
 collection.findOne({ name: name }, function (err, user) { mongodb.close(); if (err) { return callback(err);//失敗!返回 err 信息
 } callback(null, user);//成功!返回查詢的用戶信息
 }); }); }); }; module.exports = User;

 

嗯嗯嗯...思考了好一會,代碼部分應該已經完成了。但別急着運行,還有一些準備工做須要作。

打開 mongoDB 的安裝根目錄(拿我本身舉例,我安裝的是32位版本,安裝根目錄爲:C:\Program Files (x86)\MongoDB 2.6 Standard)

在該目錄下建立一個文件夾,名稱就是你的數據庫名

而後啓動命令行工具,進入 mongoDB 的安裝根目錄下的 lib 目錄,而後執行下面命令:

mongod --dbpath ../dataBaseName/

dataBaseName 指是你的數據庫名

以上命令的意思是:設置 dataBaseName 文件夾做爲咱們工程的存儲目錄並啓動數據庫

注意:必定要先建立目錄(或者已經存在目錄),再執行上面的命令,才能成功啓動數據庫,不然會報錯

 

數據庫成功啓動以後,咱們再從新啓動一下咱們的 node 服務端程序,就用上文提到過的命令:

supervisor ./bin/www

而後打開瀏覽器,訪問 http://127.0.0.1:3000/saveUser ,就能看到界面上顯示 「保存用戶數據成功!

再訪問 http://127.0.0.1:3000/getUser ,就能看到  {"email":"qwe@163.com"}

再使用 Robomongo 看看數據庫是否真的成功寫入了信息,若是成功找到和代碼中同樣的數據,說明寫入成功了~~

OK~至此,咱們就實現了一個最基礎的服務端讀寫數據庫應用雛形了。

 

 

補刀幾句,這篇筆記通篇沒有多少任何關於概念以及工具的說明。

由於它就是一篇執行記錄筆記,記錄搭建一個 最基礎的服務端讀寫數據庫應用雛形 的各個步驟。

若是要了解上面提到的工具以及代碼的含義,請本身另行百度,或者去細看我開篇時給出的文章(裏面各類概念說明很是詳細)

相關文章
相關標籤/搜索