mongodb - Mongoose 构建查询以更新多个字段
问题描述
我想创建一个端点,它将更新一个集合中的多个字段,但不是每个字段,而且我不知道确切的字段数量。
因此,例如我的 user.model 包含诸如email
, password
, name
,之类的字段active
。现在我想创建将允许更改name
andpassword
但不允许更改的端点email
and active
。它还可以同时更改两个值或仅更改一个值,具体取决于发送的内容。因此,如果我像这样将 JSON 传递给它:
{ "password":"someNewPass" }
它会更新密码,但不会触及其他字段,我什么时候会像这样发送 JSON:
{ "password":"someNewPass", "name":"John Smith" }
然后它会更新这两个值但是当我像这样发送 JSON
{ "password":"someNewPass", "name":"John Smith", "active":false }
它不会允许该动作并给出禁止状态或其他状态。
我知道我可以像这样更新多个字段:
await User.findOneAndUpdate(
{ 'resetPasswordKey': req.query.key },
{ $set: { 'password': newPasswordHash, 'name': 'John Smith' } }
)
但是如何处理我不知道将要发送的字段数量(上例中的一个或两个)并且我不想让更新每个字段(禁止email
和active
上例中)?
解决方案
你可以尝试这样的事情:
let update = { "password":"someNewPass", "name":"John Smith", "active":false }
if(update.hasOwnProperty('active'))
{
throw 'forbidden';
}
else
{
await User.findOneAndUpdate(
{ 'resetPasswordKey': req.query.key },
{ $set: update }
)
}
推荐阅读
- scripting - 如何设置一个需要每两周运行一次的 cronjob .. 到周日每两周运行一次
- spring-boot - 结合 configure() + hasAuthority() 和 PreAuthorize
- windows - 如何使用 AutoHotkey 重新分配“退出”快捷方式?
- python - 当我想加载模型时失败
- python - 使用计算列表中有多少项目的函数序列化 1tomany 关系
- react-native - 滚动时消失的标题并在 react-native 中不再滚动时出现
- airflow - Airflow Composer 删除特定的 xcom 键
- python - Python中的正确答案计数器
- javascript - 错误:找不到模块'/.../...Part-3/index.js' root@123:为什么会出现此错误
- angular - 如何将错误消息/状态传递给孩子 - ControlValueAccessor