req.params返回值的一部分

时间:2017-01-05 20:46:06

标签: node.js mongodb express mongoose

我有一个发布到我的Node / Express api的React应用程序。发布很好,但现在我正在删除,我无法弄清楚为什么req.params只返回标题字符串值的一部分。这似乎是我根本不知道的一个基本问题,所以如果这是一个荒谬的问题,请对我这么容易。

这是我的帖子,效果很好:

router.route('/movies')
.post(function(req,res) {
    var movie = new Movie();
    movie.title = req.body.title;
    movie.genre = req.body.genre;
    movie.actors = req.body.actors;
    movie.year = req.body.year;
    movie.rating = req.body.rating;
    movie._id = new Date().getTime();

    //save the movie and checkfor errors
    movie.save(function(err) {
        if (err) {
            res.send(err);
        } else {
            res.json({message: "Movie created!"});
        }    
    });

})

以下是POST后GET的邮递员结果:

[
  {
  "_id": "586d94bf3175695e48f24fbd",
  "rating": "5/5",
  "year": "1981",
  "genre": "Thriller",
  "title": "The Godfather",
  "__v": 0,
  "actors": [
    "[Robert DeNiro, Al Pacino]"
  ]
  },
] 

注意标题字符串是"教父"。现在,这是我的DELETE:

    .delete(function(req,res) {
        console.log('Title: ', req.params)
        var query = {title: req.params.title};
        Movie.findOneAndRemove(query, function(err, movie) {
            if (err) res.send(err);
              if(!movie) {
                res.json({message: "No Movie found with that title"});
              } else {
                res.json({message: "Successfully deleted Movie"});
            }
        });
    });

你会在那里看到我的console.log,它记录为:

Title:  { title: ' Godfather' }

我已经尝试过JSON.stringify param.title等,但我认为我只是做了一些错误的事情,这就是在我盯着相同的代码时躲避我。

修改

这是发布POST的客户端代码。我在Postman中测试的DELETE路由使用以下URL:

http://localhost:8080/api/movies/:The Godfather


        handleSubmit() {
        let movie = {
            title: this.title.value,
            genre: this.genre.value,
            year: this.year.value,
            actors: this.actors.value.split(','),
            rating: this.rating.value
        }

        $.post( "http://localhost:8080/api/movies", movie );

1 个答案:

答案 0 :(得分:0)

DELETE工作得很好。我的邮递员网址中包含一个冒号,其影响让我朝另一个方向发展。基本上,当我更改原始网址时:

http://localhost:8080/api/movies/:The Godfather

对此:

http://localhost:8080/api/movies/The Godfather

它运作得很好。