背景
熟悉MYSQL编程的都比较清楚,对于结果集一般都是
while(rs.next()){ ...................... }
native-mysql给出来的结果集和这个差距较大,从百度的几个结果都是使用
res.on('row', function(r) { log.info( 'read.....'); });在回调函数里面就可以取出每一条数据继续操作,
那查询没有结果呢,怎么办?
解决办法
通过查看node_modules下的command.js,发现是存放到result里面
在看examples目录下,有这样的代码
'test select no results': function(cb) { var db = createConnection(); var sql = 'SELECT * FROM tbl WHERE id = 1000000000' db.query(sql).addListener('resulti', function(r) { assert.ok(r.rows.length == 0) }).addListener('end', function() { db.close(); cb(); }) },
那综合看,可以用下面的方法来处理
var sql = 'SELECT * FROM users' dbConn.query(sql).addListener('end', function() { log.info("end "+this.result.rows.length); log.info("end "+this.result.rows[0][0]); ///如果有结果,就这么取,之前需要判断。 })
在end方法里面,对result进行引用,很细粒度的控制。
特别说明
native-mysql只适合小数据结集的操作,所以千万不要返回很多数据,通过条件加以控制。把负载留给mysql。