【问题标题】:User validation failed pathis required需要用户验证失败的路径
【发布时间】:2020-07-18 16:29:42
【问题描述】:

我正在创建一个rest api来处理进出数据库的数据,到目前为止,数据库连接良好,错误来自请求。

这是我正在使用的代码。第一个文件是 index.js

const express = require('express');
const app = express(); const mongoose = require('mongoose'); //const dotenv = require('dotenv');

//import routes authRoute = require('./routes/auth');

//dotenv.config()


//connect to db
mongoose.connect('mongodb+srv://Doe:abcdef@cluster0-pqcka.mongodb.net/<dbname>?retryWrites=true&w=majority', { useNewUrlParser: true , useUnifiedTopology: true }, ()=>console.log('connected to db'))
//connecting to middleware app.use(express.json());
//route middlewares
app.use('/api/user', authRoute);
app.listen(3000,()=>console.log('The server is up and running'));

我还有另一个名为 User.js 的文件,它存储应该在数据库中的值,即姓名和电子邮件。这是文件

 const mongoose = require('mongoose');
    const userSchema = new mongoose.Schema({ 
**name**:{ 
 type:String,
 required:true,
 min:6,
 max:255 },
 **email**:{ 
type:String, 
required:true,
 max:255,
 min:6 },
 **password**:{
 type:String, 
required:true,
 max:1024, 
min:6 }, 
date:{ 
type:Date, 
default:Date.now }
    });
    module.exports = mongoose.model('User',userSchema)

最后的文件是我存储数据的 Auth.js,这里是文件

还有一个包含数据架构的文档

const router = require('express').Router();
const User = require('../models/User');
router.post('/register',async(req,res)=>{
const user = new User({ name: req.body.name, email: req.body.email, password: req.body.password
}); try{ const savedUser = await user.save(); res.send(savedUser); }catch(err){ res.status(400).send(err); } }); module.exports= router;

到目前为止,这些是我拥有的代码。它按预期工作,即使在控制台中它也输出它已连接到数据库,因此连接中没有错误。我用来发送 post 请求的路径是

http://localhost:3000/api/user/register

我得到的结果是

{
"errors": { "name": { "properties": { "message": "Path name is required.", "type": "required", "path": "name" }, "kind": "required", "path": "name" }, "email": { "properties": { "message": "Path email is required.", "type": "required", "path": "email" }, "kind": "required", "path": "email" }, "password": { "properties": { "message": "Path password is required.", "type": "required", "path": "password" }, "kind": "required", "path": "password" } }, "_message": "User validation failed", "message": "User validation failed: name: Path name is required., email: Path email is required., password: Path password is required." }

我希望它输出所以 { "_id":"12345677763", “名称”:“约翰·多伊”, "密码":"密码", "日期":"日期" }这样的事情

{
  "_id":"12345677763",
"name":"john doe",
"password":"apassword",
"date":"The date"
}

代码看起来不错,但我无法准确指出如何解决错误,如果有任何帮助查看代码,将不胜感激。

【问题讨论】:

  • 包含架构可能有意义。
  • 用户模式在一个名为 User.js 的文件中,我在帖子中有它,它被称为 userSchema
  • Doh,对不起,不知怎的错过了。请考虑格式化代码,使其可读。
  • 我已经格式化了,希望可以理解

标签: node.js mongodb rest


【解决方案1】:

您确定添加了 body-parser 中间件吗?如果没有在下面添加这一行

 const express = require('express');
 const app = express(); 
 const mongoose = require('mongoose');
 //Use below line
 app.use(express.urlencoded({extended: false}));

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 2022-01-17
    • 2020-08-20
    • 2022-12-14
    • 2020-11-26
    • 1970-01-01
    • 2022-01-21
    • 2018-03-29
    • 2020-06-10
    相关资源
    最近更新 更多