配列内のオブジェクト値を更新しようとしています。私はメソッドを実行し、私が望む配列内の要素を検索し、200を返します。しかし、私が別の要求をした後、値は元の値に戻ります(保存しません)。ノードjs保存方法PUT
{
"_id" : "1",
"username" : "a",
"elements" : [{"_id": "22", "name":"bb"}, {"_id":"33", "name": "cc"}]
}
、これは私が私が間違っているのかわからない私の方法
update = function(req, res) {
User.findById(req.params.id, function (err, user) {
if (!user) {
res.send(404, 'User not found');
}
else{
var array = user.elements;
for (var i = 0; i < array.length; i++) {
if (array[i]._id == "22") {
result = array[i];
if (req.body.name != null) result.name = req.body.name;
result.save(function(err) {
if(!err) {
console.log('Updated');
}
else {
console.log('ERROR: ' + err);
}
res.send(result);
});
break;
}
}
}
});
}
です:
このすべての最初のスキーマです。私はすべてを簡素化していますが、問題はその方法にあると思います。
あなたが唯一の ''一度res.send(結果を)実行する必要があります。 [Promise.all](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all)または[async.js](http://caolan.github。 io/async /)特に[async.mapSeries](http://caolan.github.io/async/docs.html#mapSeries)を使用してすべての要素を更新してから、res.send()を一度実行します。 – Mikey
また、あなたのスキーマで質問を編集する必要があります。 – Mikey
私はres.sendが一度@Mikeyと呼ばれると信じていますが、インデントするのは難しいですが。 –