無服務器的數據存儲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)數組
關係型數據庫:MySQL和PostgreSQL服務器
NoSQL數據庫:Redis、MongoDB和Mongoose異步
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擅長處理變化頻繁,相對比較簡單的數據。