我有一个发布到我的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 );
答案 0 :(得分:0)
DELETE工作得很好。我的邮递员网址中包含一个冒号,其影响让我朝另一个方向发展。基本上,当我更改原始网址时:
http://localhost:8080/api/movies/:The Godfather
对此:
http://localhost:8080/api/movies/The Godfather
它运作得很好。