我能够上传文件并将用户的文件名保存在数据库中。
现在,我希望用户可以拥有文件名数组。
<-这是我的架构->
const FileSchema = new mongoose.Schema({
file: {
type: String,
},
});
const UserSchema = new mongoose.Schema({
name:String,
files:[FileSchema]
)}
<-这是路线->
const storage = multer.diskStorage({
destination: "public/upload",
filename: function (req, file, cb) {
cb(
null,
file.fieldname + "-" + Date.now() + path.extname(file.originalname)
);
},
});
//Initialize Upload
const upload = multer({
storage: storage,
fileFilter: function (req, file, cb) {
checkFileType(file, cb);
},
}).single("file");
//Check File Type
function checkFileType(file, cb) {
// Allowed extensions
const fileTypes = /pdf/;
//Check extensions
const extname = fileTypes.test(path.extname(file.originalname).toLowerCase());
//Check mime
const mimetype = fileTypes.test(file.mimetype);
if (mimetype && extname) {
return cb(null, true);
} else {
cb("Error:Pdf only");
}
}
router.post("/user/:id/upload", async (req, res) => {
const _id = req.params.id;
try {
let user = await User.findById(_id);
upload(req, res, (err) => {
if (err) {
console.log(err);
} else {
console.log(req.file);
user.files.unshift(req.file.filename);
await user.save();
res.status(200).json(user.files);
}
<-在控制台中,我收到此错误:
“ UnhandledPromiseRejectionWarning:ValidationError:用户验证失败:files.0._id:在路径” _id“的值” file-1604322715352.pdf“的对象ID转换--