【发布时间】:2021-12-10 18:53:03
【问题描述】:
我正在尝试在 express 应用程序中使用 mongoose 将图像存储在 mongoDB 中。 图片由客户端从多个地方发送,但它们的共同点是:
- 它们以 base64 格式发送
- 应使用sharp 库处理它们
- 它们应该存储在
type: Buffer字段中 - 当它们被发回时,它们应该再次采用 base64 格式。
我为基于不同模型的图像创建了一个单独的架构**,并且由于模型是多个模型,因此将所有逻辑都包含在架构中会很好,但我不知道该怎么做。
我尝试了什么:
-
.pre("save")钩子将图像转换为Buffer然后处理它们。失败,因为 base64 在处理之前从 mongoose 转换为Buffer(因为它是字段数据类型),并且 sharp 不起作用(它接收到错误编码的缓冲区)。 -
schema.path("src").set()与pre("save")做同样的事情。失败是因为 sharp 是异步的,并且 setter 没有等待结果(我不知道为什么 - 编辑:发现异步 setter 不能按设计工作)。
**
new mongoose.Schema({ src: { type: Buffer, required: true }, description: { type: String } }, { _id: false });
【问题讨论】:
标签: node.js mongodb express mongoose