从marklogic数据库向前端显示二进制文档

时间:2017-10-04 07:04:23

标签: node.js database frontend marklogic

是否可以通过执行marklogic node js api的节点程序将marklogic数据库中的二进制文件带到前端用户?

2 个答案:

答案 0 :(得分:2)

是的,这是可能的,虽然你需要更多的信息 - 我们在这里谈论什么样的二进制文件,无论你是想提供它还是让它可供下载,如果你使用任何二进制文件Node.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);
  });
});

答案 1 :(得分:1)

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

请参阅此处获取一般信息: https://docs.marklogic.com/guide/app-dev/binaries

对于我认为你可能会问的问题,看一下node.js和二进制内容的这篇伟大文章: https://developer.marklogic.com/blog/working-with-binary-documents 这个页面充满了可能对你有帮助的好东西。我建议你从上到下贯穿文档。值得一读。具体来说,看看标题部分"显示图像"。这是一个图像。但是,对于任何其他二进制内容,该技术都是相同的。