当我保存图像文件名时,它显示[对象:空原型] {标题:'值',描述:'值'}

问题描述 投票:0回答:1

我被这个错误困扰了几个小时,我试图将我的标题、描述和图像保存到我的 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

出现此错误:

[对象:空原型] { 标题:'值',描述:'值' }

我期望得到一个文件名而不是空对象

node.js mongodb express mongoose ejs
1个回答
0
投票

您能否确保您发送的保存内容发布请求的响应是 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>

© www.soinside.com 2019 - 2024. All rights reserved.