javascript - Node.js:将 base64 编码的图像响应为 JSON

标签 javascript json node.js express base64

我的数据库中有 base64 格式的所有图片以及额外数据(创建、喜欢、所有者等)。

我想实现一个/pictures GET,它返回带有图片数据的JSON,例如:

图片数据

[{
   "creation": 1479567470124,
   "data": "data:image/jpg;base64,R0lGODlhPQ...",
   "ownerId": "cbd4dd05-193c-4e93-8e76-cae055adb046",
   "likes": 23
},
{
   "creation": 1479566234367,
   "data": "data:image/jpg;base64,A0dFSfdsf34SD...",
   "ownerId": "24170e4d-246f-4c77-b493-a56bde870169",
   "likes": 4
}]

API路由

app.get('/pictures', (req, res) => {
    const { last, limit } = req.query;

    db.getPictures(last, limit)
    .then(pictures => res.status(201).jsonp(pictures))
    .catch(err => res.status(500).send(err));
});

问题

问题在于数据字段(包含base64编码图像的字段)是如此巨大。并且不可能将巨大的 json 发送到响应中。

我的问题是怎么做...有什么办法吗?也许在流中?怎么办?

任何建议都会很棒😊

注意:图像应以 base64 编码保存到数据库中(公司要求)

非常感谢!

最佳答案

是的,您可以使用流。

此示例使用文件,但很容易使其与其他内容一起使用。

https://www.sitepoint.com/introduction-to-streams/

<小时/>

编辑

不,您不能使用application/json,您的响应类型应该是arraybuffer。然后,因为您知道数据如何,所以使用 json 解析器解析响应...

在我看来,满足您需要的最佳方法是拆分响应

构建两个不同的 API,第一个是纯 json api,返回图片的所有元数据,第二个以流形式返回图像。 工作的最后一部分属于需要合并两个响应的客户端。

关于javascript - Node.js:将 base64 编码的图像响应为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694301/

相关文章:

json - 去解码json字符串

node.js - NodeJS 原生 http2 支持

javascript - 计算字符串中的重复符号并使用 Javascript 对它们进行分组

javascript - 添加了未应用悬停伪元素版本的类

javascript - 我们可以使用 Jquery 或 Javascript 从 .js 文件读取/写入 Json 数据吗?

node.js - Nightmare JS : how to set cookie?

javascript - 如何使用 MongoDB + Node.js API 连接两个表?

JavaScript:JXON 转换, "@"是否有原因?

php - 网站如何在不重新加载页面的情况下检查登录凭据?

javascript - Meteor:如何按数组的第一项对文档进行排序