как исправить ".... валидация не удалась" с помощью почтальона с помощью express / bodyParser - PullRequest
0 голосов
/ 01 октября 2019

enter image description here Я делаю API, используя express / bodyparser / MongoDB / postman, но всякий раз, когда я отправляю запрос POST, схема возвращает ошибку, как я могу исправить эту проблему?

Я пробовал разные варианты в Postman, например, проверял, правильно ли у меня были варианты, и проверял, установлен ли он в JSON.

Как выглядят мои требования:

const express = require("express");
const app = express();
const todoRoutes = require("./routes/todos");
const bodyParser = require("body-parser");

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

Какая у меня схемавыглядит так:

var todoSchema = new mongoose.Schema({
  name: {
    type: String,
    required: "Use a string"
  },
  completed: {
    type: Boolean,
    default: false
  },
created_date: {
  type: Date,
  default: Date.now
}
});

Как выглядит мой POST-запрос:

router.post("/",function(req,res){
  console.log(req.body);
db.Todo.create(req.body)
.then(function(newTodo){
  res.json(newTodo);
})
.catch(function(err){
  res.send(err);
});
});

Ошибка, которую возвращает почтальон:

{
    "errors": {
        "name": {
            "message": "Use a string",
            "name": "ValidatorError",
            "properties": {
                "message": "Use a string",
                "type": "required",
                "path": "name"
            },
            "kind": "required",
            "path": "name"
        }
    },
    "_message": "Todo validation failed",
    "message": "Todo validation failed: name: Use a string",
    "name": "ValidationError"
}

И console.logreq.body, когда я даю ключ имени и значение GoT:

'{\n "name" : "watch GoT"\n}': " }

Основная странная вещь, которую я вижу, это то, что по какой-то причине я получаю странный журнал из req.body в первую очередь(необычно 'и \ n)

1 Ответ

0 голосов
/ 01 октября 2019

Чтобы опубликовать значение параметра URL, используйте req.params

   router.post("/",function(req,res){

   db.Todo.create({ name = req.params.name })
   .then(function(newTodo){
    res.json(newTodo);
    })
    .catch(function(err){
    res.send(err);
    });
     });
...