我无法将数据存储到 Postman 上的 MongoDB(Atlas)中(Node.js with express)

Posted

技术标签:

【中文标题】我无法将数据存储到 Postman 上的 MongoDB(Atlas)中(Node.js with express)【英文标题】:I can't store data into MongoDB(Atlas) on Postman (Node.js with express) 【发布时间】:2020-12-16 04:53:20 【问题描述】:

这是我的第一篇文章。

我正在尝试将包含“title”、“body”、“sn-p”的对象数据发布到我使用 Mongo DB Atlas 的后端。

但是,当我在 postman 上对其进行测试时,我无法将这些数据存储到模型中准备好的模式中。

错误信息:

 “   title: MongooseError [ValidatorError]: Path `title` is required.
        at new ValidatorError ”

Others(body,sn-p) 也为空。

app.js:

const express = require('express'),
      mongoose = require('mongoose'),
      cors = require('cors'),
      app = express(),
      blogRoutes = require('./routes/blogRoute');

// connect to mongoDB
const dbURI = '';
mongoose.connect(dbURI, useNewUrlParser: true,useUnifiedTopology: true  )
.then(result => 
    // Listen for requests
    app.listen(3000);
)
.catch((err) => console.log(err));

// Middleware & static files
app.use(express.urlencoded( extended: true ))

// cors
app.use(cors( origin: true, credentials: true ))

//Blog Router
app.use('/blogs/api',blogRoutes);

//404
app.use((req,res) => 
    res.render('404', title:'Not Found' );
)

模型文件:

const mongoose = require('mongoose'),
      Schema = mongoose.Schema;

const blogSchema = new Schema(
    title:
        type:String,
        required:true
    ,
    snippet:
        type:String,
        required:true
    ,
    body:
        type:String,
        required:true
    ,
,  timestamps:true )

// create model
const Blog = mongoose.model('Blog',blogSchema);

module.exports = Blog;

控制器(存储):

// Store
const blog_create_post = async (req,res) => 
    const title,snippet,body = req.body;
    try 
        const blog = await Blog.create( title,snippet,body );
        res.status(201).json(blog);
        console.log(blog);
     catch (error) 
        res.status(400);
    

路由器: // 存储

router.post('/',blogController.blog_create_post)

尽管 GET 工作正常,但我在 POST 方法上被这个错误卡住了很长时间......

如果您提出建议,我将不胜感激。

【问题讨论】:

在 mongodbconnection url 中隐藏您的密码 我认为你在通过邮递员发送数据时做错了,尝试添加console.log(req.body)并查看它是否包含所有字段 【参考方案1】:

在您的 mongoose 架构中,您提到了以下标题的 required ,并且在创建新文档时它大多是空的,因此错误标题:MongooseError [ValidatorError]: Path title 是必需的。 在新的 ValidatorError 处

title:
        type:String,
        required:true
    ,

此外,您的控制器正在正确地满足标题。

如果您发送原始和 JSON,则可以是您从邮递员发送数据的方式,然后在中间件评论下方添加

app.use(express.json());

【讨论】:

以上是关于我无法将数据存储到 Postman 上的 MongoDB(Atlas)中(Node.js with express)的主要内容,如果未能解决你的问题,请参考以下文章