Node.js以数据流的方式处理查询数据

原创 2015年11月20日 14:56:08

当从数据库中查询大量数据,并希望单独处理每一条查询到的数据时,可以使用mysql模块中的query对象(不可以再使用query方法中的callback回调函数)

query对象包含以下四个事件:

fields 当接收到该表中的所有字段时触发

result 当接收到该表中的一条数据时触发

end 当接收完该表中的所有数据时触发

error 当接收数据的过程中产生错误时触发

注意:在对读取到的记录执行一个耗时较长或消耗资源较多的I/O操作时,connection对象的pause方法和resume方法可以帮助减轻读取大数据量时的压力

var mysql = require('mysql');
var fs = require('fs');
var connection = mysql.createConnection({
	host : 'localhost',
	port : 3306,
	database : 'test',
	user : 'root',
	password : ''
})
var out = fs.createWriteStream('./message.txt');
out.on('error',function(err){
	console.log('写文件操作失败,错误信息为:' + err.message);
	process.exit();
})
connection.connect(function(err){
	if(err){
		console.log('与mysql数据库建立连接失败');
	}else{
		console.log('与mysql数据库建立连接成功');
		var query = connection.query('select * from admin');
		//当接收数据的过程中产生错误时触发
		query.on('error',function(err){
			console.log('读取数据失败,错误信息为:' + err.message);
			process.exit();
		})
		//fields当接收到该表中的所有字段时触发
		.on('fields',function(fields){
			var str = "";
			fields.forEach(function(field){
				if(str != ""){
					//String.fromCharCode()表示将Unicode字符值转换为相应的字符串,这里的9表示一个制表符
					str += String.fromCharCode(9);
				}
				str += field.name;
			})
			out.write(str + '\r\n');
		})
		//result当接收到该表中的一条数据时触发
		.on('result',function(row){
			//暂停读取后续数据
			connection.pause();
			out.write(row.id + String.fromCharCode(9) + row.username + String.fromCharCode(9) + row.password + '\r\n',function(err){
				//恢复读取后续数据
				connection.resume();
			})
		})
		//end当接收完该表中的所有数据时触发
		.on('end',function(){
			console.log('数据全部写入完毕');
			connection.end();
		})
	}
})

nodejs 连接MySQL后,输出数据带有RowDataPacket

在使用 nodejs 和 koa2框架时,输出MySQL的数据,带有RowDataPacket
  • hahei2020
  • hahei2020
  • 2017年07月25日 11:37
  • 2285

Node.js后台数据处理相关方法

Node.js第三小节,不包含环境搭建内容
  • momDIY
  • momDIY
  • 2016年12月21日 21:58
  • 1473

node.js读写数据流

node中有个流的概念,stream。代表数据流动方向:向内流(可读流),向外流(可写流)。常用的流形式是文件,和tcp套接字。流是以快为单位发送数据,通过监听‘data’事件,每一次得到一块数据即进...
  • evilemon
  • evilemon
  • 2015年12月10日 11:38
  • 3687

Node.JS查询Mysql数据库输出到页面

最近在学习Node.JS,开发后台难免不会与数据库打交道,这里我采用的是MySQL数据库。今天主要是总结一下如何查询数据库里面的内容,然后以JSON数据格式输出到页面。准备工作首先安装mysql模块:...
  • qq272708698
  • qq272708698
  • 2016年04月27日 22:20
  • 2046

用JS解析file数据流的问题

这几天要做一个数据采集的测试网页,然后碰到一个问题。 在调用采集接口的时候返回的图片数据是以数据流的方式返回的,然后我就各种查询怎么把数据流转化成本地文件或者是直接转化成可以让img.src直接赋值...
  • w635669114
  • w635669114
  • 2016年08月11日 10:43
  • 4581

Node.js后台返回一维数组数据情况

后台获取的数据格式为[1,2,3] 以res.render的形式进行数据返回到前台 Js中 var rate=pr%>; 不做任何处理,前台打印接收到的数据为1,2,3,为字符串 var r...
  • qq_34987437
  • qq_34987437
  • 2017年12月25日 21:10
  • 50

管理后台-后端-Node.js篇

Node.js的框架种类繁多,我们选用了Express做为web框架,结合Sequelize做为数据库ORM框架。我们先来搭建基础环境 软件环境 Node.js Express Sequeliz...
  • IamNieo
  • IamNieo
  • 2016年01月05日 16:17
  • 8566

C# Socket编程(4)初识Socket和数据流

经过前面基础知识作为背景,现在对Socket编程进行进一步的学习。在 System.Net.Socket 命名空间提供了Socket类,利用该类我们可以直接编写Socket的客户端和服务的的程序。但是...
  • bigpudding24
  • bigpudding24
  • 2015年01月23日 09:42
  • 538

JAVA数据流概念及标准数据流的实现

1、数据流的概念计算机程序中,获取数据的方式有多种,比如:程序中直接给出、键盘输入、从数据文件中读取、从数据库中读取、通过网络读取等。 为了更有效地进行数据的输入/输出操作,Java将各种数据源的数...
  • BASIC_DU
  • BASIC_DU
  • 2017年06月30日 22:52
  • 384

使用Node.js作为后台进行爬虫

使用Node.js与request模块,爬取B站上的小GIF动图
  • u012273376
  • u012273376
  • 2016年10月05日 05:17
  • 6482
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Node.js以数据流的方式处理查询数据
举报原因:
原因补充:

(最多只允许输入30个字)