我在javascript中有一个从0到255的整数数组;
var arr = [249, 13, 105, 170];
并且需要根据以下规则将此数据存储在mysql数据库中:
因此,如果数组长度等于4,则mysql DB中blob数据的大小必须为4个字节。它可以很好地处理小于128的数字。
var res = "";
for(var i = 0; i < arr.length; i++) {
res += String.fromCharCode(arr[i]);
}
但是数字从128到256需要2个字节。
我试图使用nodejs缓冲区
var Buffer = require('buffer').Buffer,
buf = new Buffer(arr.length);
for(var i = 0; i < arr.length; i++) {
buf[i] = arr[i];
}
buf.toString('binary');
但结果相同。我不知道如何使它工作。
将数据存储在mysql数据库中,我使用node-mysql
var Client = require('mysql').Client,
client = new Client();
client.user = DB_USER;
client.password = DB_PASS;
client.host = DB_HOST;
client.connect(function(error, results) {
if(error) {
client.end();
return;
}
client.query('USE ' + DB_SCHEME, function(error, results) {
if(error) {
client.end();
return;
}
var sql = "INSERT INTO b SET `data` = ?";
var values = [buf];
client.query(sql, values,
function(error, results) {
if(error) {
return;
}
return;
}
);
});
});
你有什么主意吗?
最佳答案
我已经设法使用内置的mysql CHAR 函数来做到这一点:
var arr = [249, 13, 105, 170];
var sql = "INSERT INTO b SET `data` = CHAR( " + arr + " )";
client.query(sql);
其中数据是Blob数据