gpt4 book ai didi

javascript - 从 MongoDB 驱动程序获取二进制字段

转载 作者:可可西里 更新时间:2023-11-01 09:11:50 26 4
gpt4 key购买 nike

如何从现有 mongo 数据库文档中获取二进制字段?

在 MongoDB 控制台,如果我查找选择的记录,我会得到:

{_id:ObjectId("1234"),"cover_data" : BinData(2,"ozkAAP/Y/+AAEEpGSUYAAQEBAJYAlgAA/+IFpElDQ19QUk9GSUxFAAEBAAAFlGFwcGwCIAAAbW50clJHQiBYWVogB9kAAgAZAAsAGgALYWNzcEFQUEwAAAAAYXBwbAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAA ..... )

在我们的 web 服务器上的 python 中,当我们使用 pymongo 进行查找时,它会以二进制形式获取该字段,而 json_pickle 似乎会自动将其转换为 base64,可惜图像在发送回客户端时看起来很棒。当我将生成的 base64 与 node.js mongo 驱动程序进行比较时,它完全不同并且无法正确显示图像。

这是 Node.JS 的代码:

cb = function(comp) {
thumb_buffer = new Buffer(comp.thumbnail_data.value(),'binary');
comp.thumbnail_data = thumb_buffer.toString('base64');
}

在此处的示例和测试用例中:https://github.com/christkv/node-mongodb-native我没有看到我正在尝试做的任何例子。似乎有 BSON 反序列化器和 BinaryParser 在整个 BSON 对象的情况下使用。我只对一个字段进行了尝试,但出现了段错误。

我尝试过的事情的运行列表:

    mongo_compositions.find {_id:{$in:ids}},{},(err,compositions) -> 
for comp in compositions
do(comp) =>
thumb_buffer = comp.thumbnail_data.value(true)
test_buffer = Binary(thumb_buffer)
console.log test_buffer
console.log test_buffer.toString('base64')
#thumb_buffer = BSON.deserialize thumb_buffer
#thumb_buffer.write(comp.thumbnail_data.value(true))
#comp.thumbnail_data = thumb_buffer.toString('base64')
#cover_buffer = new Buffer(comp.cover_data.value(),'binary')
#console.log thumb_buffer.toString('base64')
#console.log "#{comp.composition_author} - #{comp.thumbnail_data.length}"
#comp.cover_data = cover_buffer.toString('base64')

最佳答案

我对您要尝试做的事情感到有点困惑。使用 node-mongodb 选择/插入二进制元素到 MongoDB 时,必须使用 binary bson object.

var buffer = new Buffer(); /* your binary data */
var binary = client.bson_serializer.Binary( buffer );
var myDoc = {
binaryField: binary;
}
//And for when selecting the document
var buffer = myDoc.binaryField.value( true );

将 toString 参数设置为 true 以选择它作为 Buffer; false 以“二进制”形式返回,但作为 manual says ,应该避免朝向缓冲对象。

从缓冲区转换为 base64:

buffer.toString('base64');

关于javascript - 从 MongoDB 驱动程序获取二进制字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8044290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com