我使用mongoose保存到mongoDb。我将照片保存在名为照片的集合中。每张照片在其模型中都有一个名为 category 的属性。我可以根据类别名称{category:' portraits'}查询所有图片。现在我还有一个名为 isDefault 的属性,它是一个布尔值,表示此照片是否应该用作此类别的默认照片。
在前端React侧,我为一个类别中的每个图像渲染了一个复选框。这意味着用户可能会选择2个或更多图像并保存。因此,我想知道在服务器上处理此问题的最佳方法,因此每个类别只能同时选择一个 isDefault 。
我可以在保存之前检查修改和添加照片功能。但是我觉得要找到所有的" isDefault"这是很多繁重的工作。每个类别将它们设置为false,然后在保存或更新之前将新的设置为true。
修改照片的示例:
exports.editPhoto = (req, res, next)=>{
// ADD A LOOKUP HERE TO SET ALL isDefault TO FALSE
Category.updateMany({ strId: req.body.category }, { $set: { "isDefault": false } })
//then do the find and update the one you want to set to true.
Photo.findByIdAndUpdate(req.body.id, req.body, {new: true})
.then(project => {
res.send(project);
}).catch(error => {
res.status(500);
res.json({message:"Failed to edit project"});
});
}
所以我的问题是有一个更好的方法来解决这个或我正在做的是一个非常好的方法。不知何故,我觉得有一种更聪明,更有主见的方法,我没有看到。