arrays - 将数组对象保存到 MongoDB 数据库时出现 Mongoose “VersionError”
问题描述
正如标题所说,我在将对象数组保存到数据库时遇到问题。
我正在从客户端发送一组对象。
我有 3 个数组,全部包含对象 - 一个包含用户当前收藏电台的数组 - 一个包含用户想要删除的电台的数组 - 以及一个包含用户想要添加到收藏夹的电台的数组
然后我执行一些逻辑,将用户想要从用户喜爱的电台中删除的电台删除。然后,我将更新后的收藏夹与用户想要添加的电台连接起来。我想用数据库中更新的对象数组替换旧的收藏夹。
问题在于它返回此错误,并且不会更新数据库。我似乎找不到解决方案来解决它。
message: 'No matching document found for id "5eada425ad35cdeac7c987f2" version 0 modifiedPaths "favouriteStations"',
name: 'VersionError',
version: 0,
modifiedPaths: [ 'favouriteStations' ]
}
这是我目前正在使用的发布请求逻辑
router.post("/favourites", (req, res) => {
console.log("UPDATING USER FAVE STATIONS");
const { id, removedStations, selectedStations, favouriteStations } = req.body;
const errors = validationResult(req);
if (!errors.isEmpty()) {
console.log("There are validation errors");
return res.status(422).json({ errors: errors.array() });
} else {
UserModel.findOneAndUpdate({ _id: id }, { findOneAndUpdate: false })
.then((user, err) => {
if (err) {
console.log("ERROR", err);
res.sendStatus(500);
} else {
const removed = favouriteStations.filter(
(fave) =>
!removedStations.some((rem) => rem.crs_code === fave.crs_code)
);
const final = removed.concat(selectedStations);
user.favouriteStations = final;
user.save((err, user) => {
if (err) {
console.log("ERROR", err);
res.sendStatus(500);
} else {
console.log(("UPDATED", user));
res.sendStatus(200);
}
});
}
})
.catch((err) => {
console.log(err);
res.sendStatus(500);
});
}
});
解决方案
推荐阅读
- macos - 有没有办法在 macOS 中读取 .env 文件?
- python - 将点列表转换为 SVG 三次分段贝塞尔曲线
- ios - iCloud 仪表板:无法将 CloudKit 架构部署到生产环境
- php - 分类过滤器的 show_option_all 数组设置
- python - 旋转单个 Kivy 元素
- r - 如何控制被 Word 重新缩放的 rmarkdown word 文档图像?
- ios - 更新我的 XCode 后,我收到一个 Strideable 错误
- windows - 无权下载到 PC 上的 Program Files 文件夹
- javascript - 无法设置未定义 JavaScript 的属性“0”
- xamarin - 如何以 sqliteconnection xamarin 形式保存图像