从express到mongoDB发布请求

时间:2018-05-30 13:10:58

标签: angular mongodb express

我正在尝试使用Express将信息发布到mongoDB。所有与DB的连接都正常,因为获取请求工作

在我的server.js中,我定义了Schema

var todoSchema = new Schema({
    taskName: String,
    createdAt: Date,
    isDone: Boolean,
    prioraty: String
  }, {
    collection: 'tasks'
  });

var Model = mongoose.model('Model', todoSchema);

然后app.post请求

app.post('/tasks', function(req, res) {
  var savedata = new Model({
    'taskName': req,
    'isDone': false,
    'createdAt': Date.now(),
    'prioraty': 'medium'
  }).save(function (err, result) {
    if (err) throw err;

    if (result) {
      res.json(result)
    }
  })
});

这根本不起作用......

在我的前端,我按下按钮调用它,但没有任何反应..

  postTask(task) {
    return this.http.post('http://localhost:3000/tasks', task);
  }

我该如何解决?如上所述,GET请求正常,所以我希望我正确的方式......

所以这里得到Request for example

app.get('/tasks', (req, res) => {
  Model.find({
   // 'request': query
  }, function(err, result) {
    if (err) throw err;
    if (result) {
      res.json(result)
    } else {
      res.send(JSON.stringify({
        error : 'Error'
      }))
    }
     })
    });

2 个答案:

答案 0 :(得分:2)

查看您的POSTtaskName是一个基于您的架构的字符串,但您传递的是完整的req对象。它应该是req.body中的属性req.body.taskName,如果这是您在请求中传递的内容。

答案 1 :(得分:1)

首先,您需要在前端收到您的回复

在服务中:

postTask(task) {
    return this.http.post('http://localhost:3000/tasks', task);
}

如果您使用angularjs(角度1 +)

您需要使用thencatch来接收response

在控制器中:

this.service.postTask(task).then(function(response) {
    console.log(response)
}).catch(function(error) {
    console.log(error)
})

如果您使用angular(角度2 +)

您需要subscribe使用this.http返回observable

在组件中

this.service.postTask(task).subscribe( response => {
    console.log(response)
})

其次,正如@andrew所说,

taskName您应发送string,因为taskName架构为string

var todoSchema = new Schema({
    taskName: String,
})

<强>更新

  

req.body包含请求中提交的键值对数据   身体。默认情况下,它是未定义的,并在您使用时填充   身体解析中间件,如body-parser

以下示例说明如何使用body-parsing middleware填充req.body

var app = require('express')();
var bodyParser = require('body-parser');

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

    app.post('/tasks', function(req, res) {
       console.log(req.body)
    });

Here is Documentation of body-parser