POST请求时没有收到JSON数据?

时间:2017-03-27 10:23:31

标签: javascript json node.js mongodb serve

我正在尝试使用post请求将数据插入数据库,如下所示

127.0.0.1:3000/api/users?fname=asd&lname=edc&emailid=asdas.asds@gmail.com&userpass=dasd

但是在数据库中输入空白数据。我正在使用MongoDB数据库。

我正在使用AJAX请求执行此操作以下是我正在使用的代码

addUser(dataUser){
 console.log("Adding user:", dataUser);
 $.ajax({
   type: 'POST', url: '/api/users', contentType: 'application/json',
   data: JSON.stringify(dataUser),
   success: function(data) {
     console.log("check it");
   }.bind(this),
   error: function(xhr, status, err) {
     // ideally, show error to user.
     console.log("Error adding bug:", err);
   }
 });
}

这是nodeJS文件中的mt POST方法

app.post('/api/users', function(req,res){
 console.log("Req body:", req.body);
 var newUser = req.body;
 db.collection("Users").insertOne(newUser, function(err, result) {
   var newId = result.insertedId;
   db.collection("Users").find({_id: newId}).next(function(err, doc) {
     res.json(doc);
   });
 });
});

我检查了dataUser变量,在转换为JSON之后给出了正确的值,但仍然在nodeJS代码中我得到空白JSON数据

2 个答案:

答案 0 :(得分:0)

为了从req获取正文,您需要body-parser模块使用npm install body-parser,因为body-parser模块已从express的最新版本中删除。

添加此依赖项后,您需要在nodejs文件中添加这些行。

var bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({
   extended: true
}));

app.use(bodyParser.json());

参考

如果有帮助,请告诉我。

答案 1 :(得分:0)

app.post('/api/users', function(req,res){
 console.log("Req body:", req.body);

 //parse json string
 var newUser = JSON.parse(req.body);

 db.collection("Users").insertOne(newUser, function(err, result) {
   var newId = result.insertedId;
   db.collection("Users").find({_id: newId}).next(function(err, doc) {
     res.json(doc);
   });
 });
});