BSON / Binary为Node JS中的MongoDB对象ID字符串

时间:2018-01-19 10:03:39

标签: node.js mongodb

我正在研究MongoDB版本3.6中引入的Change Streams。 Change Streams有一个功能,我可以指定从历史记录中的特定更改开始流式更改。在Node.js的本机驱动程序中,要恢复更改流,它会显示(documentation here

  

指定新更改流的逻辑起点。这应该是先前返回的更改流文档中的_id字段。

当我在控制台中打印时,这就是我得到的

{ _id: 
   { _data: 
      Binary {
        _bsontype: 'Binary',
        sub_type: 0,
        position: 49,
        buffer: <Buffer 82 5a 61 a5 4f 00 00 00 01 46 64 5f 69 64 00 64 5a 61 a5 4f 08 c2 95 31 d0 48 a8 2e 00 5a 10 04 7c c9 60 de de 18 48 94 87 3f 37 63 08 da bb 78 04> } },
        ...
}

我的问题是我不知道如何将此格式的_id存储在数据库或文件中。是否可以将此二进制对象转换为字符串,以便稍后可以使用它从该特定_id恢复我的更改流。示例代码将不胜感激。

1 个答案:

答案 0 :(得分:0)

将BSON Binary转换为缓冲区并返回

const Binary = require('mongodb').Binary;
const fs     = require('fs');

从_id保存_data:

var wstream = fs.createWriteStream('/tmp/test');
wstream.write(lastChange._id._data.read(0));
wstream.close();

然后重建resumeToken:

fs.readFile('/tmp/test', void 0, function(err, data) {
  const resumeToken = { _data: new Binary(data) };
});