繁体   English   中英

验证器错误 http Express JS 中的 POST 响应

[英]Validator error http POST response in Express JS

我不知道为什么我会收到验证器错误响应。 我已尝试尽可能多地进行调试,但我看不到问题出在哪里。 我已经使用了我在模式中使用的确切名称,但我仍然在 postman 和 rest 客户端中收到错误我的 server.js 如下所示:

const app = express()
const mongoose = require('mongoose')
const dotenv= require('dotenv')
const routesUrls=require('./routes/routes')
const cors = require('cors')
 
dotenv.config()
mongoose.connect(process.env.DATABASE_ACCESS, () =>console.log("Database Connected"))

app.use(express.json())
app.use(cors())
app.use('/app', routesUrls)
app.listen(4000, () => console.log("server is up and running"))

我的路线.js

const router = express.Router()
const signupTemplateCopy = require('../models/SignUpModels')

router.post('/signup/', (request,response) =>{
const SignedupUser =  new signupTemplateCopy({
            fullname:request.body.fullname,
            username:request.body.username,
            email:request.body.email,
            password:request.body.password   
})

        SignedupUser.save().then(data =>{
        response.json(data)})
        .catch(error =>{
            response.json(error)
        })
})
module.exports = router ```

The Schema looks like this

```const mongoose = require('mongoose')
const signupTemplate = new mongoose.Schema({

    fullname:{
        type:String,
        required:true
    },
    username:{
        type:String,
        required:true
    },
    email:{
        type:String,
        required:true

    },
    password:{ 
        type:String,
        required:true
    },
    date:{
        type:Date,
        default:Date.now
    }
})
module.exports = mongoose.model('mytable', signupTemplate)

错误

  "errors": {
    "fullname": {
      "name": "ValidatorError",
      "message": "Path `fullname` is required.",
      "properties": {
        "message": "Path `fullname` is required.",
        "type": "required",
        "path": "fullname"
      },
      "kind": "required",
      "path": "fullname"
    },
    "username": {
      "name": "ValidatorError",
      "message": "Path `username` is required.",
      "properties": {
        "message": "Path `username` is required.",
        "type": "required",
        "path": "username"
      },
      "kind": "required",
      "path": "username"
    },
    "email": {
      "name": "ValidatorError",
      "message": "Path `email` is required.",
      "properties": {
        "message": "Path `email` is required.",
        "type": "required",
        "path": "email"
      },
      "kind": "required",
      "path": "email"
    },
    "password": {
      "name": "ValidatorError",
      "message": "Path `password` is required.",
      "properties": {
        "message": "Path `password` is required.",
        "type": "required",
        "path": "password"
      },
      "kind": "required",
      "path": "password"
    }
  },```
  "_message": "mytable validation failed",
  "message": "mytable validation failed: fullname: Path `fullname` is required., username: Path `username` is required., email: Path `email` is required., password: Path `password` is required."
}



确保你在 POSTMANT 和 route.js 中使用了准确的名称,检查我的问题所在的大写字母

const router = express.Router();
const signUpTemplateCopy = require("../models/signupmodels");

router.post("/signup", (request, response) => {
 const signedUpUser = new signUpTemplateCopy({
   fullName: request.body.fullName,
   userName: request.body.userName,
   Email: request.body.Email,
   password: request.body.password,
 });
 signedUpUser.save().then((data) => {
   response.json(data).catch((error) => {
     response.json(error);
   });
 });
});

module.exports = router;
router.post('/signup/', (request,response) => {
const { fullname, username, email, password } = request.body
const SignedupUser =  new signupTemplateCopy()

SignedupUser.fullname = fullname;
SignedupUser.username = username;
SignedupUser.email = email;
SignedupUser.password = password;

SignedupUser.save()
.then(data => {
    response.json(data)
})
.catch(error => {
        response.json(error)
}) )}

你可以试试这个。我对 mongoDb、express、nodeJs 还很陌生,但我认为一个好的做法是将这些函数放在 controller 文件中。

此外,如果使用 postman,请确保设置标题,Content-Type -> Application/JSON。 而你要发送的原始身体应该看起来像这样......

{ "fullname": "John Doe", "username": "johndoe123", "email": "johndoe@gmail.com", "password": "123456 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM