【问题标题】:Unable to send info through post request in postman?无法通过邮递员中的发布请求发送信息?
【发布时间】:2020-08-15 21:06:18
【问题描述】:

我是 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=true&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");
});

包.json:

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

但是,每当我尝试使用邮递员测试我的代码时,我都无法添加用户数据。 这是我发送的发帖请求。但是新创建的用户对象看起来像:

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

谁能帮我看看我哪里出错了?

【问题讨论】:

  • 你的意思是新创建的用户对象只有id__v在数据库中填充?
  • 是的。除了 id 和 v @eol 之外,没有任何数据存储
  • 您能否验证req.body 确实拥有数据?也许做一个console.log(req.body)
  • 刚试了一下,发现 req.body 确实是空的 {}。那么如何将数据传递给 req.body 呢? @eol
  • 刚刚再次检查了您的代码,发现您缺少 json body-parser 中间件,请参阅我的答案。

标签: node.js postman


【解决方案1】:

您的应用缺少json body-parser 中间件,因此req.body 为空。将以下行添加到您的应用程序设置中:

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

【讨论】:

  • 请注意,对于较新版本的 express(14 及更高版本),body 解析器模块会自动包含在 express 中,因此您可以使用 ``` app.use(express.urlencoded({extended: true })); app.use(express.json()); ``` 总体来说并没有什么不同。
【解决方案2】:

您的代码缺少以下内容:

app.use(bodyParser.json())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 2023-04-08
    • 2021-04-29
    • 2021-11-07
    相关资源
    最近更新 更多