Node.js学习(一)

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 [email protected] - 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();	
}