我被这个错误困扰了几个小时,我试图将我的标题、描述和图像保存到我的 mongodb 图集中。它只保存标题和描述,但不保存图像。
当我尝试在控制台日志上显示它时,它显示此错误: [对象:空原型] { 标题:'值',描述:'值' } 内容已保存!
任何人都可以帮助我为什么它说对象:空原型?提前谢谢你
这是我的js文件:
const express = require('express')
const router = express.Router()
const multer = require('multer')
const path = require('path')
const bodyParser = require('body-parser')
const User = require('../models/user-model')
const Post = require('../models/post-model')
router.use(bodyParser.json())
const uploadPath = path.join('public', Post.coverImageBasePath)
const imageMimeTypes = ['images/jpg', 'images/png', 'images/gif']
const upload = multer({
dest: uploadPath,
fileFilter: (req, file, callback) => {
callback(null, imageMimeTypes.includes(file.mimetype))
}
})
//SERVE EJS FILES:
router.get('/', (req, res) => {
res.render('foodie/home')
})
router.get('/content', (req, res) => {
res.render('foodie/posts/all')
})
router.get('/content/create', (req, res) => {
res.render('foodie/posts/new')
})
//SAVE CONTENT
router.post('/', upload.single('coverImage') , async (req, res) => {
console.log(req.body)
const fileName = req.file != null ? req.file.filename : null
const post = new Post({
title: req.body.title,
description: req.body.description,
coverImage: fileName
})
try {
const newPost = await post.save()
console.log('CONTENT SAVED!')
} catch (err) {
console.log(err)
}
})
这是我的模型:
const mongoose = require('mongoose')
const coverImageBasePath = 'uploads/contentCover'
const postSchema = new mongoose.Schema({
title: {
type: String,
required: true,
unique: true
},
description: {
type: String,
required: true
},
coverImage: {
type: String
},
publishDate: {
type: Date,
required: true,
default: Date.now
}
}, {
timestamps: true
})
module.exports = mongoose.model('Post', postSchema)
module.exports.coverImageBasePath = coverImageBasePath
出现此错误:
[对象:空原型] { 标题:'值',描述:'值' }
我期望得到一个文件名而不是空对象
您能否确保您发送的保存内容发布请求的响应是 multipart/form-data 类型? 例如:
<form action="/upload" method="POST" enctype="multipart/form-data">
<label for="title">Title:</label>
<input type="text" name="title" id="title">
<label for="description">Description:</label>
<input type="text" name="description" id="desc">
<label for="file">Choose a file to upload:</label>
<input type="file" name="file" id="file">
<input type="submit" value="Upload">
</form>