首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >图像文件未保存在MongoDB中

图像文件未保存在MongoDB中
EN

Stack Overflow用户
提问于 2021-02-01 13:02:43
回答 1查看 283关注 0票数 0

我正在使用MERN技术创建一个新闻文章web应用程序。

为了做到这一点,我有以下模式:

代码语言:javascript
运行
复制
const mongoose = require('mongoose');
const Schema = mongoose.Schema;

let Article = new Schema({
    article_title: {
        type: String,
        required: true
    },
    article_summary: {
        type: String,
        required: true
    },
    article_content: {
        type: String,
        required: true
    },
    article_image: {
        type: String,
        required: true
    },
    article_reference: {
        type: String,
        required: true
    }
});

module.exports = mongoose.model('Article', Article);

和下面的快捷服务器,其中我有一个post方法,上面的信息作为"req.body“和"req.file”保存在db中,使用Mongoose和Multer保存:

代码语言:javascript
运行
复制
const multer = require('multer');
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const cors = require('cors');
const mongoose = require('mongoose');
const articleRoutes = express.Router();
const PORT = process.env.PORT || 4000;

let Article = require('./article.model');

app.use(cors());
app.use(bodyParser.json());

mongoose.connect('mongodb://127.0.0.1:27017/article', { useNewUrlParser: true, useUnifiedTopology: true });
const connection = mongoose.connection;

connection.once('open', function() {
    console.log("MongoDB database connection established successfully");
});

const storage = multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null, "images");
    },
    filename: (req, file, cb) => {
        cb(null, Date.now() + "--" + file.originalname);
    }
});

const upload = multer({ storage: storage });

articleRoutes.route("/content-management-system/add").post(upload.single("article_image"), (req, res) => {
    console.log("START FROM HERE");
    const article = new Article({
        article_title: req.body.article_title,
        article_summary: req.body.article_summary,
        article_content: req.body.article_content,
        article_image: req.file.article_image,
        article_reference: req.body.article_reference
    });
    console.log(article);
    console.log(mongoose.connection.readyState);
    article
        .save()
        .then(() => {
            console.log("Saved successfully!");
            res.status(200).json({'article': 'article saved successfully'});
        })
        .catch(err => {
            console.log("Article save unsuccessful!");
            console.log("article: " + article);
            console.log(req.file);
            console.log(req.body);
            res.status(400).send('adding new article failed');
        });
});

但是,当我在邮递员上传递邮件请求时,它失败了,出现了一个400个错误,上面写着“不好的请求”。如您所见,在上面的代码中,我有许多console.logs,它们显示了req.filereq.body以及文章的值。当我查看我的控制台时,它会显示这些值不包括article_image.。下面是console.logs的照片:

不好意思,对于许多代码示例,但大多数只是样板代码,问题很简单:为什么我的article_image文件,它保存在我的图像文件与穆特,而不是保存在我的MongoDB?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-01 13:25:12

只需尝试article_image: req.file.path而不是article_image: req.file.article_image

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65993200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档