async function update(id, userParam) {
const user = await User.findById(id);
// validate
if (!user) throw 'User not found';
if (user.username !== userParam.username && await User.findOne({ username: userParam.username })) {
throw 'Username "' + userParam.username + '" is already taken';
}
// hash password if it was entered
if (userParam.password) {
userParam.hash = bcrypt.hashSync(userParam.password, 10);
}
// copy userParam properties to user
Object.assign(user, userParam);
await user.save();
}
当我发送更新请求时,它会更新体内的所有内容。我只需要发送userid
,username
和user role
和update
来仅更新那些字段。我是个初学者。请帮助我解决问题
您可以找到文档,并使用“ updateOne”更新所需的字段。例如,这里我将仅更新用户集合的用户名。 mongodb的“ updateOne”将完成此任务,基本上updateOne具有3个参数。
搜索您可以使用的文件,这里我使用了_id字段。{ "_id": "232323"}
第二个参数是{$set:{"username":"kalo"}
,这将设置新值。在这里您可以使用任意多个字段。
User.updateOne({ "_id": "232323"},{$set:{"username":"kalo"}})
如果使用Mongoose nodejs mongodb ORM,请阅读this。这个文档说的是我解释过的相同内容。
注意:这里我描述了纯mongodb的方式,因为您没有指定任何orm,例如mongoose