2017-01-05 5 views
-1

Node/Express APIに投稿しているReactアプリがあります。投稿は正常ですが、今は削除されています。なぜreq.paramsがタイトル文字列値の一部だけを返すのか理解できません。これは私が気づいていない基本的なもののように思えるので、ばかげた質問であれば私には簡単に行きます。ここでreq.paramsは値の一部を返します

が正常に動作します私の記事、次のとおりです。

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

お知らせタイトル文字列は "ゴッドファーザー" である:ここでは

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の郵便配達の結果です。さて、ここで私の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のなどを試してみましたが、私は私だと思いますここで間違ったことをやっているだけで、私が同じコードを見つめたほど私は逃げ出しています。ここで

EDIT

はPOSTを行うクライアントコードです。 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

これが何かを持っているかどうかはわかりませんが、なぜあなたのアクターを配列内の配列としてストリング化するのですか?手元にある問題とは何の関係もないでしょう。要求を出しているクライアントコードを投稿できますか? – LostJon

+0

Iveが投稿を編集しました。俳優の場合は、1つのテキストフィールドから文字列として入力します。 – jmcgui05

+0

はあなたの情報がreq.body ... req.paramsではないはずです。私はその1日後半の遅れかもしれません – LostJon

答えて

0

DELETEは問題なく動作しています。私の郵便配達人のURLにはコロンが含まれていましたが、それは私を別の方向に送ってくれました。これに

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

:私はこのことから、元のURLを変更したときに、基本的に、

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

それはうまく働きました。

+0

なぜコロンを置くのか不思議でした。 –

+0

さて、私もそれを見ましたが、私はそれがあなたのルートをどのように定義したのか、実際にクライアントからどのように取り出したのかは考えていませんでした。何が仮定しているかを見てください... – LostJon

関連する問題