node.js基础:数据存储
2015-08-21 16:18
826 查看
无服务器的数据存储
内存存储
数据库管理系统(DBMS)
关系型数据库:MySQL和PostgreSQL
NoSQL数据库:Redis、MongoDB和Mongoose
MySQL
使用第三方mysql模块让node.js跟MySQL交互
如果喜欢基于SQL的处理方式,关系型数据库管理系统MySQL和PostgreSQL都得到了很好的支持。
如果发现SQL在性能或灵活性上表现欠佳,Redis和MongoDB都是不错的可选项。MongoDB是极佳的通用DBMS,而Redis擅长处理变化频繁,相对比较简单的数据。
内存存储
fs文件系统模块来管理文件的存储。 文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集。您可以通过调用require('fs')来获取该模块。文件系统模块中的所有方法均有异步和同步版本。
在繁重的任务中,强烈推荐使用这些函数的异步版本.同步版本会阻塞进程,直到完成处理,也就是说会暂停所有的连接。
[code]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
MySQL
使用第三方mysql模块让node.js跟MySQL交互
设置数据库//引入mysql模块 var mysql = require('mysql')]npm install mongodb
连接MongoDBclient.open(function(err){ if(err) throw err; client.collection('test_insert', function(err, collection){ if(err) throw err; //.. }); });
将文档插入集合中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; });
搜索文档var _id = new client.bson_serializer.ObjectID('4e650d344ac74b5a01000001'); collection.remove({_id: _id},{safe:true},function(err){ if(err) throw err; });
Mongoose
Mongoose是一个抽象的MongoDB数据库访问API,在底层处理细节,可以加快开发速度,同时维护更少的代码。 ]//连接 var mongoose = require('mongoose'); var db = mongoose.connect('mongodb://localhost/tasks'); //tasks为数据库 //打开 mongoose.disconnect();
注册schemavar 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.update({_id: '4e650d344ac74b5a01000001'},{description:'Paint the bikeshed green.'},{multi:false},function(err,rows_updated){ if (err) throw err; console.log('Updated.'); });
删除文档
[code]var Task = mongoose.model('Task');
Task.findById('4e650d344ac74b5a01000001',function(err,task){
task.remove();
});
如果喜欢基于SQL的处理方式,关系型数据库管理系统MySQL和PostgreSQL都得到了很好的支持。
如果发现SQL在性能或灵活性上表现欠佳,Redis和MongoDB都是不错的可选项。MongoDB是极佳的通用DBMS,而Redis擅长处理变化频繁,相对比较简单的数据。
相关文章推荐
- SQL Server XML基础学习之<6>--XQuery的 value() 方法、 exist() 方法 和 nodes() 方法
- Populating Next Right Pointers in Each Node II
- Node.js笔记(一):node.js 和 express 的安装和配置
- 玩转Node.js - 06. 使其模块化
- hadoop Unhealthy Nodes问题解决
- Pomelo:网易开源基于 Node.js 的游戏服务端框架
- 使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
- 有关Node、Element,HTMLCollection、NodeList
- How to Run Node.js with Express on Mobile Devices
- node-webkit:开发桌面+WEB混合型应用的神器
- Leetcode: Populating Next Right Pointers in Each Node
- LeetCode题解:Remove Nth Node From End of List
- Populating Next Right Pointers in Each Node I&&II ——II仍然需要认真看看
- AngularJS+Node.js+socket.io 开发在线聊天室
- 基于Grunt&Mocha 搭建Nodejs自动化单元测试框架(含代码覆盖率统计)
- node.js 安装
- hadoop2.x通过Zookeeper来实现namenode的HA方案以及ResourceManager单点故障的解决方案
- 《NodeJS开发指南》第五章微博实例开发总结
- 使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
- 关于inodes占用100%的问题及解决方法