mongodbで名前を更新する際に問題があります。名前は最初の変数には、ユーザーが保存され、次のように関数に渡されます。putAjax(editName)そして、それはここでは関数に行く:ノードエクスプレスでPUTを使用してmongoの名前を更新できません
function putAjax(editName) {
$.ajax({
type: "PUT",
url: "/items/"+ editName,
data: editName,
dataType: 'json',
})
.done(function(result) {
console.log("result:", result);
console.log("data successfully saved:");
})
.fail(function(jqXHR, error, errorThrown) {
console.log(jqXHR);
console.log(error);
console.log(errorThrown);
});
};
私は(結果)にconsole.logとIすることができます私は編集が行われたと仮定して、編集された名前を見ることができます。最後に、サーバー上でapp.putの呼び出しを行います
app.put('/items/:name', function(req, res) {
Item.find(req.params.name, function(err, items) {
if (err) {
return res.status(404).json({
message: 'Internal Server Error'
});
}
Item.findOneAndUpdate({
name: req.params.name
}, {
$set: {
name: req.params.name
}
}, { new: true },
function() {
res.json(items);
});
});
});
これは、更新が発生していないようだところです。 mongoシェルを使用すると、私はまだ同じ名前を持っていて、編集された名前はありません。混乱する部分は、なぜconsole.log(結果)が私に編集した名前を表示するのかです。私は本当にこれに関する助けに感謝します。ありがとう。
ことを指摘してくれてありがとう。私は一日中このままでいましたが、データベースで検索するために元の値を渡す方法を理解できません。それはここに渡されるだろうか? app.put( '/アイテム/:名' クライアント側で、機能(reqは、解像度、データ) そして、私のAJAXは、次のようになります。 VAR OLDNAME = { "名前":OLDNAME}; $。アヤックス({ タイプ: "PUT"、 URL: "/アイテム/" + OLDNAME、 データ:OLDNAME、 データ型: 'JSON'、 })。 – marcusk7
私はコードサンプルと私の答えを更新しました –
ダンしかし、私の場合は、次のコードを変更して動作させる必要がありました:Item.findOneAndUpdate({name:req.params.id} 、{$ set:{name:data.name}}。 – marcusk7