html - 如何使用 MongoDB/GridFS 从我的 API 将文件作为 base-64 数据 URL 字符串返回?
问题描述
我的 MongoDB 中有一组联系人
这些联系人有头像(或“个人资料图片”)
这是上述用户的个人资料图片:
...以及该文件的一大块(只有一个)。
我正在尝试获取 ^^^ 那个 ^^^ 块并将其解析为 base-64 数据 URL,以便将它从我的服务器返回到我的应用程序并在<img>
src 属性中使用它。
app.get('/queryContacts', (req, res) => {
const getContacts = async query => {
let contacts = await db
.collection('contacts')
.find(query)
.toArray();
return contacts;
};
const getImages = async id => {
let imageUrl = 'data:image/jpg;base64';
await bucket
.openDownloadStream(new ObjectID(id))
.on('data', chunk => {
imageUrl += chunk.toString('base64');
})
.on('end', () => {
return imageUrl;
});
}
getContacts({account_id: new ObjectID(req.query.id)}).then(contacts => {
Object.keys(contacts).forEach(key => {
getImages(contacts[key].image_id).then(url => {
console.log(url); // undefined
contacts[key].imageUrl = url;
});
});
res.json(contacts);
});
});
问题是当我尝试这个时,URL 是undefined
因为getImages()
没有等待'end'
事件完成。
解决方案
推荐阅读
- android - 清单中的这个字符串是什么意思?
- javascript - 在 Javascript 中加载 Javascript URL
- python - 从 VS Code 在终端中运行文件
- php - ratchetphp/Pawl 连接关闭 (1009 - ) FRAME::CLOSE_TOO_BIG = 1009
- javascript - HTTP Java 脚本请求不返回任何内容
- javascript - 无法手动设置滑块
- javascript - 将 JS 循环行为与日期混淆
- listview - JavaFX 8:使 ListView Cell 的高度适应其 ScrollBar
- kubernetes - Kubernetes 集群 - 使用 L3 路由 - 无法通过网络 ping 豆荚
- javascript - 使用规范化请求和响应的选项增强 FastifyAdapter