node.js基礎:數據存儲

  無服務器的數據存儲node

    內存存儲mysql

var http = require('http');
var count = 0; //服務器訪問次數存儲在內存中
http.createServer(function(req,res){
	res.write('hello'+ ++count);
	res.end();
}).listen(3000);    

    基於文件的存儲sql

    node.js中主要用fs文件系統模塊來管理文件的存儲。mongodb

    文件系統模塊是一個簡單包裝的標準 POSIX 文件 I/O 操做方法集。您能夠經過調用require('fs')來獲取該模塊。文件系統模塊中的全部方法均有異步和同步版本。數據庫

    在繁重的任務中,強烈推薦使用這些函數的異步版本.同步版本會阻塞進程,直到完成處理,也就是說會暫停全部的鏈接。 npm

var fs = require('fs');
//讀取一個文件的所有內容
fs.readFile('./node.txt',function(err,data){
	if(err) throw err;
	console.log(data); //data就是文件的內容
});
//將數據寫入一個文件, 若是文件原先存在,會被替換。 data 能夠是一個string,也能夠是一個原生buffer。
fs.writeFile('./node.txt','hello','utf8',function(err) {
	if(err) throw err;
	console.log('Saved');
});

  數據庫管理系統(DBMS)數組

    關係型數據庫:MySQLPostgreSQL服務器

    NoSQL數據庫:RedisMongoDBMongoose異步

  MySQLmongoose

  使用第三方mysql模塊讓node.js跟MySQL交互

npm install mysql

  設置數據庫

//引入mysql模塊
var mysql = require('mysql');
//設置數據庫
var db = mysql.createConnection({
	host:     '127.0.0.1',
	user:     'root',
	password: '123456',
	database: 'shop' //數據庫名稱
});
db.connect();
//查詢數據
db.query('select * from tb_user',function(err,rows,fields){
    if(err) throw err;
    console.log( rows[0].tel ); //rows爲查詢到的數據集數組
});
db.end();

   MongoDB

   安裝

npm install mongodb

   鏈接MongoDB

var mongodb = require('mongodb');
var server = new mongodb.Server('127.0.0.1', 27017, {});
var client = new mongodb.Db('mydatabase', server, {w: 1});

   訪問MongoDB集合

client.open(function(err){
    if(err) throw err;
    client.collection('test_insert', function(err, collection){
        if(err) throw err;
        //..
    });
});

   將文檔插入集合中

collection.insert({
    "title": "I like cake",
    "body": "It is quite good."
},{safe: true }, function(err, documents) {
    if(err) throw err;
    console.log('Document ID is: ' + documents[0]._id);
});

   用文檔ID更新數據

var _id = new client.bson_serializer .ObjectID('4e650d344ac74b5a01000001');
collection.update({_id: _id},{$set:{"title": "I ate too much cake"}},{safe: true},function(err){
    if (err) throw err;
});

   搜索文檔

collection.find({"title": "I ate too much cake"}).toArray(function(err,results){
    if(err) throw err;
    console.log(results);
});

   刪除文檔

var _id = new client.bson_serializer.ObjectID('4e650d344ac74b5a01000001');
collection.remove({_id: _id},{safe:true},function(err){
    if(err) throw err;
});

   Mongoose

   Mongoose是一個抽象的MongoDB數據庫訪問API,在底層處理細節,能夠加快開發速度,同時維護更少的代碼。

npm install mongoose

   鏈接的打開和關閉

//鏈接
var mongoose = require('mongoose');
var db = mongoose.connect('mongodb://localhost/tasks'); //tasks爲數據庫
//打開
mongoose.disconnect();

   註冊schema

var Schema = mongoose.Schema;
var Tasks = new Schema({
	project: String,
	description: String
});
mongoose.model('Task', Tasks);

   添加任務

var Task = mongoose.model('Task');
var task = new Task();
task.project = 'Bikeshed';
task.description = 'Paint the bikeshed red.';
task.save(function(err) {
	if (err) throw err;
	console.log('Task saved.');
});

   搜索文檔

var Task = mongoose.model('Task');
Task.find({'project': 'Bikeshed'}, function(err, tasks) {
	for (var i = 0; i < tasks.length; i++) {
		console.log('ID:' + tasks[i]._id);
		console.log(tasks[i].description);
	}
});

   更新文檔

var Task = mongoose.model('Task');
Task.update({_id: '4e650d344ac74b5a01000001'},{description:'Paint the bikeshed green.'},{multi:false},function(err,rows_updated){
	if (err) throw err;
	console.log('Updated.');
});

   刪除文檔

var Task = mongoose.model('Task');
Task.findById('4e650d344ac74b5a01000001',function(err,task){
	task.remove();
});

   若是喜歡基於SQL的處理方式,關係型數據庫管理系統MySQL和PostgreSQL都獲得了很好的支持。

  若是發現SQL在性能或靈活性上表現欠佳,Redis和MongoDB都是不錯的可選項。MongoDB是極佳的通用DBMS,而Redis擅長處理變化頻繁,相對比較簡單的數據。

相關文章
相關標籤/搜索