这里的问题和请求相当简单,但尚未找到明确的答案。我是 multer、Node 和 MongoDB 的新手,这比我预想的要困难得多。
我想在 MongoDB 中存储小 JPEG,每个可能不超过 4 MB。据我所知,BSON 最大可达 < 16 MB,如果更大,则必须由 gridfs 处理。
这些图像只是我收藏中每个 _id 的个人资料照片。到目前为止,我已经能够仅使用 multer 在本地上传文件。现在我正在尝试弄清楚如何以正确的方式在 MongoDB 中获取这些图像。
这么小的图像需要 gridfs 吗?执行此操作的最佳计划是什么?
我正在想象将文件更新插入数据库,但想知道这是否只会上传文件名而不是图像本身?我将如何改变我的“模式”来适应这个?如果您知道如何更改下面的更新插入(相对于进入 gridFS),那将是理想的选择。这是代码。
数据库更新:
const updatePlace = async (place) => {
const database = await connect();
return database.collection('place').findOneAndUpdate(
{ _id: new ObjectID(place._id) },
{
$set: {
name: place.name,
category: place.category,
city: place.city,
state: place.state,
country: place.country,
image: { filename: place.image, mime: 'image/jpeg' },
},
},
{ upsert: true, returnOriginal: false }
);
};
存储和上传:
const multer = require('multer');
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './public/uploads');
},
filename: function (req, file, cb) {
cb(null, Date.now() + '_' + file.originalname);
},
});
const upload = multer({ storage: storage });
Mongo DB 项目现在是这样的:
{
"_id": {
"$oid": "5fbc37c4fc13ae680b00001e"
},
"name": "Petronas Towers",
"category": "activity",
"city": "Kuala Lumpur",
"state": "Kuala Lumpur",
"country": "Malaysia",
"image": {
"filename": "petronas.jpg",
"mime": "image/jpeg"
}
}
慕标琳琳
慕妹3146593
相关分类