Не удается отправить информацию через post-запрос в postman?

#node.js #postman

#node.js #postman

Вопрос:

Я новичок в node js и postman и работал над этим серверным проектом для хранения сведений о случайных лицах в моей базе данных. Это мой app.js файл:

     var express=require("express");
var app=express();
//database
var mongoose=require("mongoose");
//connecting to database
mongoose.connect("mongodb srv://mymongohost?retryWrites=trueamp;w=majority",{ useNewUrlParser: true, useUnifiedTopology: true });
//creating user schema
var userSchema=new mongoose.Schema({
    name:String,
    age: String, 
    gender: String, 
    number: String,
    location: String
    });
var User =mongoose.model("user",userSchema);
//using body parser
var bodyParser=require("body-parser");
    app.use(bodyParser.urlencoded({extended:true}));
//Creating a user 
/*User.create({
    name: "Snehan",
    age: "30",
    gender: "male",
    number: "998899876",
    location: "Sample address, near Thane, Mumbai,Mahasrashtra"
})*/
//ROUTES
app.get("/",function(req,res){
    res.redirect("/user");
})
//sending all user data
app.get("/user", function(req,res){
    User.find({}, function(err,user)
             {
        if(err) 
            res.send(err);
        else
            res.json(user);
    })
})
//creating new user data
app.post("/user",function(req,res){
    //storing the data received from body
    var name=req.body.name;
    var age=req.body.age;
    var gender=req.body.gender;
    var number=req.body.number;
    var location=req.body.location;
    //creating new object with all details
    var newUser={
        name:name,
        age:age,
        gender:gender,
        number:number,
        location: location
    }
    User.create(newUser,function(err,newlyCreatedUser){
        if(err)
        {res.send("Unable to create new user");}
        else
        {res.send(newlyCreatedUser);}
    });     
    
})
app.listen(process.env.PORT || 3000, function() {
  console.log("Server started on port 3000");
});
  

Package.json:

 {
  "name": "userdetails",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo "Error: no test specified" amp;amp; exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "mongoose": "^5.10.0"
  }
}
  

Однако всякий раз, когда я пытаюсь протестировать свой код с помощью postman, я не могу добавить данные пользователя post A.
введите описание изображения здесь
Это был post-запрос, который я отправил. Но недавно созданный пользовательский объект выглядит как:

 {
        "_id": "5f37ba449adfe112529f872a",
        "__v": 0
    }
   
  

Кто-нибудь может мне помочь в том, где я ошибаюсь?

Комментарии:

1. Вы имеете в виду, что вновь созданный пользовательский объект имеет только id и __v заполненный в базе данных?

2. ДА. Никакие данные не хранятся, кроме id и v @eol

3. Можете ли вы подтвердить, что req.body данные действительно хранятся? Может быть, сделать console.log(req.body)

4. Просто попробовал это, и оказалось, что req.body фактически пуст {}. Тогда как передать данные в req.body? @eol

5. Только что еще раз проверил ваш код и увидел, что вам не хватает промежуточного программного обеспечения json body-parser, смотрите Мой ответ.

Ответ №1:

В вашем приложении отсутствует промежуточное программное обеспечение для json анализа тела, следовательно req.body , оно пустое. Добавьте следующую строку в ваше приложение-настройка:

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

Комментарии:

1. просто примечание, для более новых версий express (14 и выше) модуль синтаксического анализа тела автоматически включается в express, поэтому вы можете использовать «app.use(express.urlencoded({extended: true})); app.use(express.json()); « На самом деле, это не имеет значения в целом.

Ответ №2:

В вашем коде отсутствует это:

 app.use(bodyParser.json())