我无法将数据存储到 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)的主要内容,如果未能解决你的问题,请参考以下文章

当 Postman 工作正常时,无法使用 jQuery 将数据发布到 Web api

无法从 S3 存储桶(镶木地板文件)将数据加载到 EMR 上的猪中

无法将数据从 React 发送到 Springboot

如何使用 POSTMAN 应用程序将文件上传到 Amazon S3

Postman 上的授权类型 Bearer Token

无法使用 Heroku postgres 将数据添加到 Spring Boot 上的数据库