我无法将数据存储到 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 上的猪中