猫鼬更新文档甚至没有 运行 save() 函数
Mongoose Updating document without even running save() function
我正在使用快递。
在从 Api 发送响应之前,我在 MongoDb 中有文件路径。
我在 api Url 前面加上文件路径
喜欢
song.path = url + song.path;
res.send(song);
但是这样做是为了更新 mongodb 中的路径,即使我没有保存此文档,我只是发送响应
我试过了
const newSong = song;
newSong.path = url + newSong.path;
res.send(newSong)
;
但这没有帮助,文档仍在更新中。
这是我的控制器
const song = await Song.findOne({ 'lastPlayed': false }).sort("-totalRating");
song.lastPlayed = true;
song.save();
song.path = url + song.path;
res.send(song);
它应该只更新响应的 属性.. 不在 Db
更新
如果我注释掉 song.save()
路径不会更新。
发生的事情是 doc.save()
是异步的,当您改变对象并发送响应时 doc.save()
仅在主线程之后执行,这就是为什么 song.path = url + song.path;
被复制到 mongoDB 即使你认为你之前保存过它。
您可以只为响应创建一个新对象
const song = await Song.findOne({ 'lastPlayed': false }).sort("-totalRating");
song.lastPlayed = true;
song.save();
res.send({ ...song, path: url + song.path });
或者您可以 await
保存然后改变响应对象,如果您想在发送响应之前处理错误,这很好。
const song = await Song.findOne({ 'lastPlayed': false }).sort("-totalRating");
song.lastPlayed = true;
await song.save();
song.path = url + song.path;
res.send(song);
我正在使用快递。 在从 Api 发送响应之前,我在 MongoDb 中有文件路径。 我在 api Url 前面加上文件路径 喜欢
song.path = url + song.path;
res.send(song);
但是这样做是为了更新 mongodb 中的路径,即使我没有保存此文档,我只是发送响应
我试过了
const newSong = song;
newSong.path = url + newSong.path;
res.send(newSong)
;
但这没有帮助,文档仍在更新中。
这是我的控制器
const song = await Song.findOne({ 'lastPlayed': false }).sort("-totalRating");
song.lastPlayed = true;
song.save();
song.path = url + song.path;
res.send(song);
它应该只更新响应的 属性.. 不在 Db
更新
如果我注释掉 song.save()
路径不会更新。
发生的事情是 doc.save()
是异步的,当您改变对象并发送响应时 doc.save()
仅在主线程之后执行,这就是为什么 song.path = url + song.path;
被复制到 mongoDB 即使你认为你之前保存过它。
您可以只为响应创建一个新对象
const song = await Song.findOne({ 'lastPlayed': false }).sort("-totalRating");
song.lastPlayed = true;
song.save();
res.send({ ...song, path: url + song.path });
或者您可以 await
保存然后改变响应对象,如果您想在发送响应之前处理错误,这很好。
const song = await Song.findOne({ 'lastPlayed': false }).sort("-totalRating");
song.lastPlayed = true;
await song.save();
song.path = url + song.path;
res.send(song);