数据库:mysql node模块:mysql
我想压缩一段字符串,使用到了node的zlib,代码如下: var str = '[1,2,3,4,[1,2,3,4],6,7,8]'; zlib.gzip( str, function( err, buffer ){ db.update( table_name, { data : buffer.toString( 'binary' ) }, 'id=10001' fucntion( err, res ){} ); });
数据库的data字段数据类型我设置的为blob
然后我获取刚刚设置的数据: db.select( table_name, 'id=10001', function( err, res ) { var buf = res[0].data; //打印出从数据库取出的data,它的数据类型是buffer //我担心mysql库得到的buffer并不是我压缩时候的编码类型,所以我做了如下转化 var new_buf = new Buffer( buf.toString( 'binary' ), 'binary' ); //然后解压 zlib.unzip( new_buf, function( err, res ) { //这里就报错了 }) });
我看了下主要原因是,存进mysql的数据和取出来的数据不一样,不是说node_mysql已经支持binary的存储了吗,为什么还不一样,是不是底层在buffer数据了加了些东西,怎么解决这个问题,有人遇到过没