2017-10-04 46 views

回答

2

是的,尽管您可能需要从您的最终信息中获得更多的信息 - 我们在这里讨论的是什么样的二进制文件,您是否希望提供它或使其可供下载,并且如果您使用任何节点.js包来提供这些内容(例如ExpressJS)。一般来说,最好使用流来读取块中的二进制文件,而不是从整个数据库中读取整个二进制文件。

下面是使用Express和Node.js的证明这种理念的代码片段:

const displayImage = ((req, res) => { 
    const uri = `/image/${req.params.id}`; //use your URI 
    res.writeHead(200, { 'Content-type': 'image/png' }); //use your Content-type 
    const data = []; 
    db.documents.read(uri).stream('chunked') 
    .on('data', chunk => data.push(chunk)) 
    .on('error', error => console.error(error)) 
    .on('end',() => { 
    let buffer = new Buffer(data.length).fill(0); 
    buffer = Buffer.concat(data); 
    res.end(buffer); 
    }); 
}); 
+0

谢谢你的解释。但你能解释什么是缓冲区,为什么我们使用新的关键字? –

+0

这是一个内置的Node.js API来与流进行交互:https://nodejs.org/api/buffer.html#buffer_buffer – Tamas

1

你没有一个很清晰的问题。或者至少不是非常具体。通常,二进制文档在查询和返回时与其他任何内容相同。 node.js中有一些你可能关心的项目 - 就像分块的数据。

请在这里看到的一般信息: https://docs.marklogic.com/guide/app-dev/binaries

为了什么我想你可能问,看看上的Node.js和二进制内容,这个伟大的写了起来: https://developer.marklogic.com/blog/working-with-binary-documents 这个网页是完全可能帮助你的好东西。我建议你从上到下浏览文档。这是值得的阅读。具体来说,看看题为“显示图像”的部分。这是一个图像。但是,对于任何其他二进制内容,该技术都是相同的。