Node.js學習(一) - Node.js + MongoDB
最近有專案需要用Node.js寫API,資料庫是MongoDB
已經配了一臺有裝Node.js及MongoDB的虛擬主機,
而我需要寫API放上去,
那這時,我要學的東西如下,
一、用Node.js寫一個Web Server
二、Node.js連接到MongoDB
三、Node.js + MongoDB的基本新增、修改、刪除、查詢
四、MongoDB的指令
五、取得Post到API的資料
六、輸出JSON文件
-------------------
如果以上皆完成,應該就可以一日速成API撰寫
一、用Node.js寫一個Web Server
var http = require('http');
http.createServer(function (req, res) {
router(req,res);
}).listen(port);
function router(req,res) {
var url = req.url;
var dirs = url.split('/');
var html = '';
html = 'Not Found';
console.log('Node.js web server get request '+ url);
switch(dirs.length) {
case 0:
case 1:
reponse_html(res,html);
break;
default:
var pro = dirs[1];
//API撰寫
if(pro==''){
callback_default(req,res);
} else if(pro=='api'){//API
get_post(req,res,function(postData){
callback_api(req,res,postData);
});
} else {//Not Found
reponse_html(res,html);
}
break;
}
}
二、Node.js連接到MongoDB
要連接MongoDB,需要裝npm去裝node.js mongodb drier
需要先下指令,安裝npm
sudo apt-get install npm
安裝最新版npm
sudo npm install npm@latest - g
//安裝mongodb driver
npm install mongodb -g
將mongodb 的library連結到自己正在寫的node.js目錄底下
cd /var/node/
npm link mongodb
三、Node.js + MongoDB的基本新增、修改、刪除、查詢
再來撰寫node.js與mongodb的串接
連接
const mongo = require('mongodb').MongoClient;
const url = "mongodb://localhost:27017/YouDBName";
mongo.connect(conn_url, function (err, client) {
if(err) {
throw err;
}
});
新增
collection.insertOne(obj, (err, result) => {
if (err) {
throw err;
}
var ok = result.result.ok;
client.close();
});
搜尋
collection.find({}).sort( { CreateTime: -1 } ).skip(PageSize*PageIndex - PageSize).limit(PageSize).toArray((err, items) => {
if (err) {
client.close();
throw err;
}
client.close();
});
計數
collection.find({}).count(function(err,count){
if (err) {
client.close();
throw err;
}
client.close();
});
刪除
collection.remove({},function(err,result){
if (err) {
client.close();
throw err;
}
client.close();
});
四、MongoDB的指令
為了觀察是否有輸入
在Linux輸入mongo 進入mongodb server
show dbs //顯示所有db
use databaseName //使用某個database
show collections //顯示所有table
db //顯示目前使用的database
五、取得Post到API的資料
因為我撰寫的是api,傳過來的資料,會是json格式,
所以如何取得,並轉換成josn物件呢?如下
var querystring = require('querystring');
function get_post(req,res,callback){
req.setEncoding('utf-8');
var postData = '';
req.addListener("data", function (postDataChunk) {
postData += postDataChunk;
});
req.addListener("end", function () {
var params = [];
if(req.headers['content-type']=='application/json') {
params = JSON.parse(postData);
} else {
params = querystring.parse(postData);
}
callback(params);
});
}
六、輸出JSON文件
那要怎麼輸出JSON文件呢?如下
function reponse_json(res,result){
var ContentType = 'application/json';
var StatusCode = 200;
res.writeHead(StatusCode,{'Content-Type':ContentType});
res.write(JSON.stringify(result));
res.end();
}