私のPOSTメソッドがMongoose経由で私のMongoDBに保存されない理由を教えてもらえますか?ローカルノードAPIがマングースDBにPOST
マイ角度コントローラ
$scope.saveUpdate = function(id){
$http.post('/api/entry/' + id)
.success(function(data){
$scope.entry = data;
})
.error(function(data){
console.log('There was a problem saving your entry: ' + data);
});
// update page with remaining entries
$http.get('/api/entries').then(function(response){
$scope.entries = response.data;
});
}
マイAPI
app.post('/api/entry/:entry_id', function(req, res){
if (req.params) {
Entries.findByIdAndUpdate({
_id : req.params,
// the properties we're updating and the new values
username: req.body.username,
date: req.body.date,
income: req.body.income
}, function(err, entry){
if (err) {
res.send(err) }
else {
res.send('Success!');
}
})
}
});
更新されたエントリは、ボタンがクリックされたDOMを打つが、ときに
<button type="submit" class="btn" ng-click="saveUpdate(entry._id)">Update</button>
ビューにボタンを提出Angularコアコードに当たって、DBを更新せずに元の状態に戻ります。エラーもスローされません。
あなたの言っていることが分かります。 'entry_id'を私の要求に置き換えた後も残念ながらDBは更新されません。これは、angular.jsコアファイル内の 'completeRequest'コールバックに当たったとき元のエントリに戻ります。これがなぜなのか分かりません。 – PanicBus
@PanicBus私の答えを見て、私は私の答えで 'Entries.findByIdAndUpdate()'への呼び出しを更新しました。最初のパラメータは 'req.params.entry_id'と一致する' _id'値でなければなりません。 2番目のパラメータはフィールドのオブジェクトであり、値は更新されます。 1つのオブジェクトのIDとIDの間違ったパラメータを渡しています。 [Model.findByIdAndUpdate Docs](http://mongoosejs.com/docs/api.html#model_Model.findByIdAndUpdate) – peteb
私は何が起こっているのかを見ています。そして、あなたは正しい、 'body'は空のオブジェクト' body:{} 'として来ています。あなたはそれがなぜ、そしてreqから来るデータをどのように構文解析するのかについて、わかっていますか?私はbody-parserミドルウェアを含めて使用しています。 – PanicBus