Javascript mysql 的非十六进制

Javascript unhex for mysql

我想在 MySQL:

中保存二进制长度为 16 的 uuid

在 MySQL 我只需要这样做:

unhex(replace(uuid(), '-', '')

我已经这样做了:

var uuid = require('node-uuid');
var id = new Buffer(uuid.v4().replace(/-/g, ''), 'binary');

我将一个 Buffer[32] 值插入到数据库中。那不对,它没有完全保存在二进制中。

我正在使用 booshelfjs orm 作为数据库命令,所以我不打算对我的代码执行 运行 MySQL 命令。

有人知道吗?

生成的 UUID 以十六进制表示。因此,有必要使用十六进制而不是二进制输入编码:

var uuid = require('node-uuid');
var id = new Buffer(uuid.v4().replace(/-/g, ''), 'hex');

在 vanilla JS 中,同时支持节点和浏览器:

  function unhex(s) {
    var arr = []
    for (var i = 0; i < s.length; i += 2) {
      var c = s.substr(i, 2);
      arr.push(parseInt(c, 16));
    }
    return String.fromCharCode.apply(null, arr);
  }