文字列をIDで見つかったデータベースエントリに配列にプッシュしようとしています。データベースでMongoose(findByIdAndUpdate)クエリが更新されないのはなぜですか?
app.put('/todo/:id', urlencodedParser, function(req, res) {
Todo.findByIdAndUpdate({_id:ObjectId(req.params.id)},
{ "$push": { "item": req.body } },
{ "new": true, "upsert": true },
function (err, data) {
if (err) throw err;
console.log("test");
}
); });
問題があるが、ログは私はこの方法では、これまで実際に呼び出されていないと思わせるコンソールに出力されることはありません:これは、putメソッドそのものです。私のように(送信ボタン、テキストボックスのクリアをクリックしたとき、私はそれが、私は送信ボタン上のputメソッドを呼び出して、フロントエンド部分、?:賢明
$('form').on('submit', function(){
var item = $('form input');
var todo = {item: item.val()};
$.ajax({
type: 'PUT',
url: '/todo/' + id,
data: todo,
success: function(data){
location.reload();
}
});
return false;
});
行動、とは何かを持っていると仮定していますそれは)、そしてURLを変更します:
/todo/59bd48905a2ed911e0d480f2?item=item+to+be+inserted
コンソールにログインするエラーはありません。どこが間違っていますか?
E:ここで
は同様に、私のスキーマです:、
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({extended: false});
** findByIdAndUpdate **最初の引数として**だけ** IDを期待しています。 ** findOneAndUpdate **を使用して_idで一致させるオブジェクトを渡すことができます。 –
@SteveHolgado Hm、req.params.idだけを渡しても助けにならなかったようです。 – treo
私は、テキストボックスがクリアされて成功関数に達したと言っていることを理解していますか?もしそうなら、私はハンドラに応答がないのを見ます。 'urlencodedParser'ミドルウェアがリクエストに応答し、ハンドラのコールバックに到達できませんでしたか? –