无服务器的数据存储

    内存存储

var http = require('http');
var count = 0; //服务器访问次数存储在内存中
http.createServer(function(req,res){res.write('hello'+ ++count);res.end();
}).listen(3000);    

    基于文件的存储

    node.js中主要用fs文件系统模块来管理文件的存储。

    文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集。您可以通过调用require('fs')来获取该模块。文件系统模块中的所有方法均有异步和同步版本。

    在繁重的任务中,强烈推荐使用这些函数的异步版本.同步版本会阻塞进程,直到完成处理,也就是说会暂停所有的连接。 

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

  MySQL

  使用第三方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擅长处理变化频繁,相对比较简单的数据。

转载于:https://www.cnblogs.com/eyeear/p/4744130.html

node.js基础:数据存储相关推荐

  1. 构建node.js基础镜像_在Android上构建Node.js应用程序

    构建node.js基础镜像 by Aurélien Giraud 通过AurélienGiraud 在Android上构建Node.js应用程序-第1部分:Termux,Vim和Node.js (Bu ...

  2. Node.js基础笔记

    Node.js基础笔记 1. NodeJS入门基础 1.1 NodeJS 介绍 1.1.1 NodeJS 是什么 1.1.2 NodeJS 的优势 1.1.3 NodeJS 的技术特性 1.1.4 N ...

  3. Node.js(一、Node.js基础、模块加载机制、包等)

    Node.js(一.Node.js基础.模块加载机制.包等) 1.Node.js基础 1.1.Node是什么 1.2.Node环境安装失败解决方法 1.2.1.Node环境搭建 1.2.2.错误代码2 ...

  4. 构建node.js基础镜像_我如何使用Node.js构建工作抓取网络应用

    构建node.js基础镜像 by Oyetoke Tobi Emmanuel 由Oyetoke Tobi Emmanuel 我如何使用Node.js构建工作抓取网络应用 (How I built a ...

  5. 360前端星计划--Node.js 基础入门

    01 什么是 Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. https://node ...

  6. Node.js基础使用

    Node.js基础使用 1. vs code 里面如何切换自定义终端? Ctrl+Shift+p 打开命令面板 搜索shell 找到:终端 选择默认Shell进行更改 2. 浏览器 vs node 异 ...

  7. 01慕课网《进击Node.js基础(一)》Node.js安装,创建例子

    版本:偶数位为稳定版本,基数为非稳定版本 - 0.6.x - 0.7.x    - 0.8.x -0.9.x    -0.10.x  -0.11.x 概念:Node.js采用谷歌浏览器的V8引擎,用C ...

  8. 前端工程化----Node.js基础篇

    文章目录 1.认识Node.js Node.js是什么 Node.js应用场景 2.Node.js安装和版本管理 Node.js安装 Node.js版本工具 3.Node.js执行文件 4.Node. ...

  9. Node.js基础知识普及

    Node.js只支持单线程,故不会产生死锁,采用非阻塞I/O机制和事件环机制.非常适合与开发需要处理大量并发的输入/输出的应用程序.   一. Node.js的核心模块有很多,这里先写几个比较常用的( ...

最新文章

  1. C++——Lambda函数
  2. 如何实现手机自动适应网页
  3. 共享windows目录给vm linux,将windows中的文件夹共享给Linux虚拟机
  4. Makefile常用模板(静态链接库、动态链接库、可执行文件)
  5. 为什么 HashMap 的加载因子是0.75?
  6. oracle database 11g 如何正确卸载
  7. python数值转换机_用于ETL的Python数据转换工具详解
  8. Apache 服务器端安装配置(Windows版本)
  9. hasp运行不成功_国内首条ZA-PPV电缆成功运行50天 新电缆有啥不一样?
  10. 从企业角度看:网站设计的关键是了解与沟通
  11. 开源BI工具superset的安装使用
  12. 快速排序C语言实现 - 源码详解
  13. word添加引用及自动更新的方法
  14. ftp木马病毒photo.scr,Video.scr,AV.scr文件处理方法(windows服务器)
  15. 文本域(可输入多行文本)
  16. MATLAB入门学习笔记12
  17. [转]解决adb not responding you can wait more
  18. 环境变量:系统变量和用户变量
  19. php代码审计课程笔记
  20. 2020全年小迪网络安全笔记(目录)

热门文章

  1. hihoCoder 1092 : Have Lunch Together
  2. 【转】在.Net中关于AOP的实现
  3. 《linux 网卡别名的添加和绑定》RHEL6
  4. python requests 10041报错_Python-Requests1-批量登录获取uid
  5. python 反复访问迭代器iter,反复使用next
  6. matlab save将变量值保存为mat
  7. 单例模式(饿汉式和懒汉式)
  8. MATLAB正太分布函数
  9. 产品经验谈:产品经理需要熟知几种常用思维模型
  10. 少儿编程150讲轻松学Scratch(十二)-用Scratch制作石头剪子布游戏