【发布时间】:2018-03-15 11:52:47
【问题描述】:
是否可以通过执行marklogic node js api的节点程序将二进制文件从marklogic数据库带到前端用户?
【问题讨论】:
标签: node.js database frontend marklogic
是否可以通过执行marklogic node js api的节点程序将二进制文件从marklogic数据库带到前端用户?
【问题讨论】:
标签: node.js database frontend marklogic
是的,这是可能的,尽管您需要提供更多信息 - 我们在这里讨论的是哪种二进制文件,您是想提供它还是让它可供下载,以及您是否使用任何 Node.js。 js 包来提供此内容(例如 ExpressJS)。一般来说,使用流以块的形式读取二进制文件是一种很好的做法,而不是从数据库中一次性读取整个二进制文件。
这是一个使用 Express 和 Node.js 的代码 sn-p 展示了这个概念:
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);
});
});
【讨论】:
你没有一个非常明确的问题。或者至少不是很具体。通常,在查询和返回二进制文档时,其处理方式与任何其他内容相同。 node.js 中有一些你可能关心的项目——比如分块数据。
请参阅此处了解一般信息: https://docs.marklogic.com/guide/app-dev/binaries
对于我认为您可能会问的问题,请查看这篇关于 node.js 和二进制内容的精彩文章: https://developer.marklogic.com/blog/working-with-binary-documents 这个页面充满了可以帮助你的好东西。我建议您从上到下浏览文档。值得一读。具体来说,请查看标题为“显示图像”的部分。这是为了一张图片。但是,该技术对于任何其他二进制内容都是相同的。
【讨论】: