Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在节点中将UUID转换为二进制文件/从二进制文件转换为二进制文件_Javascript_Mysql_Node.js - Fatal编程技术网

Javascript 在节点中将UUID转换为二进制文件/从二进制文件转换为二进制文件

Javascript 在节点中将UUID转换为二进制文件/从二进制文件转换为二进制文件,javascript,mysql,node.js,Javascript,Mysql,Node.js,我工作的项目切换到了MySQL。我们使用的键是UUID字符串(如43d597d7-2323-325a-90fc-21fa5947b9f3),但数据库字段不是字符串,而是定义为二进制(16)-16字节无符号二进制 我知道UUID基本上是一个16字节的二进制,但我不知道如何从/转换为二进制数 我正在使用访问数据库,并尝试使用解析UUID,但这会产生一个整数数组。我还尝试使用,但这只会产生一个缓冲区对象 如何将UUID字符串转换为该字段?如何将从该字段读取的值转换为UUID?由于时间不够,我将粘贴提供

我工作的项目切换到了MySQL。我们使用的键是UUID字符串(如43d597d7-2323-325a-90fc-21fa5947b9f3),但数据库字段不是字符串,而是定义为二进制(16)-16字节无符号二进制

我知道UUID基本上是一个16字节的二进制,但我不知道如何从/转换为二进制数

我正在使用访问数据库,并尝试使用解析UUID,但这会产生一个整数数组。我还尝试使用,但这只会产生一个缓冲区对象


如何将UUID字符串转换为该字段?如何将从该字段读取的值转换为UUID?

由于时间不够,我将粘贴提供有效结果的注释,稍后修改答案,以便更清晰


好的,如果您的JS应用程序中已经有一个
UUID 43d597d7-2323-325a-90fc-21fa5947b9f3
格式的字符串,您将向MySQL发送以下查询:


从uuid_col=UNHEX的表格中选择col(替换('43d597d7-2323-325a-90fc-21fa5947b9f3','-','');

如果您想提取数据并使UUID具有可读格式,则必须将其转换为十六进制表示法


从表中选择十六进制(uuid\u col);


那个会给你UUID没有破折号。如果给它不带破折号的十六进制字符串,
节点uuid.parse
方法似乎有效。

当N.B.的答案有效时,我偶然发现了另一个解决方案

UUID v1以基于时间的字符段开始;然而,最小的单位首先出现,使得指数中的分布相当分散

如果您不拘泥于UUID v1的精确格式,那么就有一个NodeJS模块,它可以基于UUID v1生成唯一的ID,该ID也可以单调地增加和缩放,以及自动递增的ID。它也适用于节点mysql

结帐:

节点mysql的一个示例:

var MID = require('monotonic-id');

var mid = new MID();

client.query('INSERT INTO `...` SET `mid`=?', mid.toBuffer(), function(err, res) {
   ...
})

这个函数应该可以让您非常接近。您提到的整数数组可能是您想要的,在您使用n.toString(16)@dandavis将它们转换回字符串之后。我尝试的第一件事是:从x中删除破折号,
y=parseInt(x,16)
->生成一个大的数字(如9.2230…e+31),但随后
y.toString(16)
返回一个完全不同的数字。JavaScript无法很好地处理16字节的精度,在转换过程中可能会丢失有效数字。转换后的整数数组是什么样子的?虚线中的范围具有不同的字节大小:4-2-2-2-6(总共16个),您无法将它们解析为一个大数字,因为js数字没有那么多字节。。。有关详细信息,请参阅此节点模块是什么。你指的是这个吗?它没有解析方法。@MustafaMamun