问题描述
我是multer / MongoDB的新手,无法弄清楚如何保存文件和普通数据库条目,例如
{
title: 'Some title',description: 'A description',body: 'A detailed blog post'
}
一次
<form action="http://localhost:8080/upload"
method="POST"
encType="multipart/form-data"
>
<div><label htmlFor="title">Title: </label><input name="title"/></div>
<br/>
<div><label htmlFor="description">Description: </label><input name="description"/></div>
<br/>
<div><label htmlFor="body">Text: </label><input name="body"/></div>
<br/>
<input
type="file"
name="file"
id="input-files"
/>
<br/>
<button type="submit">Submit</button>
</form>
我尝试过
const Blog = require('../models/blog-model');
const util = require("util");
const multer = require("multer");
const GridFsstorage = require("multer-gridfs-storage");
var storage = new GridFsstorage({
url: "mongodb://localhost:27017/blogs",options: { useNewUrlParser: true,useUnifiedTopology: true },file: (req,file) => {
new Blog({
title: req.body.title,description: req.body.description,body: req.body.body,}).save((err,blog) => {
if(err) {
console.log("Error while saving blog entry.");
} else {
console.log("Blog entry posted.");
}
});
const match = ["image/png","image/jpeg"];
if (match.indexOf(file.mimetype) === -1) {
const filename = `${Date.Now()}-${file.originalname}`;
return filename;
}
return {
bucketName: "photos",filename: `${Date.Now()}-${file.originalname}`
};
}
});
var uploadBlog = multer({ storage: storage }).single("file");
var uploadBlogMiddleware = util.promisify(uploadBlog);
module.exports = uploadBlogMiddleware;
但是,只有文件被上载到博客数据库内的照片存储桶,而博客模型/架构未保存。甚至不会在save函数的lambda内打印任何一条日志语句。
常见做法是分别上传文件和文本,然后以某种方式链接它们吗?谷歌搜索一个小时没有给我一个有效的答案。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)