【发布时间】: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 中间件,请参阅我的答案。