我需要使用Node.js和MongoDB更新应用程序中的用户名

问题描述 投票:0回答:1
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();
}

当我发送更新请求时,它会更新体内的所有内容。我只需要发送useridusernameuser roleupdate来仅更新那些字段。我是个初学者。请帮助我解决问题

node.js mongodb
1个回答
0
投票

您可以找到文档,并使用“ updateOne”更新所需的字段。例如,这里我将仅更新用户集合的用户名。 mongodb的“ updateOne”将完成此任务,基本上updateOne具有3个参数。

搜索您可以使用的文件,这里我使用了_id字段。{ "_id": "232323"}第二个参数是{$set:{"username":"kalo"},这将设置新值。在这里您可以使用任意多个字段。

User.updateOne({ "_id": "232323"},{$set:{"username":"kalo"}})

更多mongodb doc

如果使用Mongoose nodejs mongodb ORM,请阅读this。这个文档说的是我解释过的相同内容。

注意:这里我描述了纯mongodb的方式,因为您没有指定任何orm,例如mongoose

© www.soinside.com 2019 - 2024. All rights reserved.