我的数据库中有 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/