gpt4 book ai didi

node.js - 如何在 NodeJS 和 Mongodb 中存储头像?

转载 作者:太空宇宙 更新时间:2023-11-04 02:52:38 27 4
gpt4 key购买 nike

假设我正在创建一个网站,用户可以在其中注册、登录并查看彼此的个人资料。

我已经创建了注册、登录和查看其他人的个人资料的功能,但我不知道如何添加每个用户独有的个人资料图片。

这就是我目前保存用户数据的方式。

mongoose.Schema({
username: {
type: String,
unique: true,
required: true
},
email: {
type: String,
lowercase: true,
unique: true,
required: true
},
password: {
type: String,
required: true
}
});

我应该将这些图像保存在哪里?是否可以将 .png 文件保存在 mongodb 中?

当我想在 HTML/View Engine 中查看图像时,我会简单地使用如下内容:

<img src="<%= user.image %>">

然后将实际图像保存在我的文件中的某个位置?

最佳答案

可以通过三种方式实现您的目标。

  1. 直接将字段保存在 MongoDB(文档)中

  2. 直接将字段保存在 MongoDB (GridFS) 中

  3. 上传到AmazonS3并将ID直接保存在MongoDB(文档)中

1)只有在少数情况下,老实说您没有太多可存储的内容(我从未在生产中使用此场景,但在测试中多次使用)。所以我不建议你朝这个方向发展。

2) 它非常适合大图像以及需要添加一些“逻辑”的地方。例如,我过去使用 GridFS 将“完整图像”和调整大小的图像列表(user1_120_90.png、user1_320_240.png)放在同一位置,并且可以非常快速地访问它们,因为延迟非常低。更重要的是,我可以向存储的对象添加一些“自定义字段”,然后进行查询以准确获取我需要的内容,而无需处理 Amazon-S3。

3)非常可扩展的解决方案,为您提供一些优势(S3 在成本方面比 GridFS 便宜,因为 GridFS 向您收取“数据库空间”费用,而 Amazon-S3 向您收取“只是对象存储”费用。过去很多项目都基于那里。S3 附带一个易于使用和管理的 NPM 模块。

对于您的场景,我可以建议您将数据库与对象存储分开。然后将您的文件转移到 Amazon、Azure、Google 上。如果您必须处理非常低延迟的场景,也许您可​​以考虑 GridFS(在我的例子中,交易是管理 4 亿个 3D 图像,其中包含大量与其关联的几何图形,并作为元数据字段存储在 GridFS 中)。

引用GridFS: https://docs.mongodb.com/manual/core/gridfs/

祝你好运!

关于node.js - 如何在 NodeJS 和 Mongodb 中存储头像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44803800/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com