如何正确使用nodejs和javascript在mysql中存储blob数据
我在 javascript 中有一个从 0 到 255 的整数数组;
var arr = [249, 13, 105, 170];
并且要求将这些数据按照以下规则存储在mysql数据库中:
- 1个数字=1字节
因此,如果数组长度等于4,那么mysql数据库中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;
}
);
});
});
你有什么想法吗?
I have an array of integers from 0 to 255 in javascript;
var arr = [249, 13, 105, 170];
And it's required to store this data in mysql database according this rule:
- 1 number = 1 byte
So, if the array length equals 4, then the size of blob data in mysql DB must be 4 bytes. And it works fine with numbers less than 128.
var res = "";
for(var i = 0; i < arr.length; i++) {
res += String.fromCharCode(arr[i]);
}
But numbers from 128 to 256 takes 2 bytes.
I tried to use nodejs buffer
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');
but the same result. I have no idea how to make it work.
to store data in mysql database I use 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;
}
);
});
});
Do you have any idea?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我已经设法使用内置的 mysql CHAR 函数来做到这一点:
其中 data 是 blob 数据
I've managed to do it using built-in mysql CHAR function:
where data is blob data