mongodb 对路径'_id'执行更新将修改不可变字段'_id',并在主体中以json格式发送对象

tzdcorbm  于 2022-12-12  发布在  Go
关注(0)|答案(1)|浏览(77)

这是我的控制器:

const updateUser = async (req, res) => {
        const uid = req.params.uid
        const updates = req.body
        console.log(updates)
        const status = await dao.updateUser(uid, updates)
        res.json(status)
    }

这是我的刀:

export const updateUser = async (uid, userUpdates) => {
  await usersModel.updateOne({ _id: uid }),
      { $set: userUpdates }
}

这是我在json主体中发送的内容(作为userUpdates):

{
    "username": "hihi",
    "password": "chloe123",
    "firstName": "chloe",
    "lastName": "hu",
    "email": "123456@gmail.com",
    "dob": "2022-12-05",
    "phone": "000-000-0000",
    "type": "STUDENT"
}

我搜索了这个错误,我发送的是一个对象,而不是一个新的模型,所以我不明白为什么这个错误仍然发生,因为如果它是一个对象,它不会自动创建a _id,我想知道这个应该如何解决。谢谢!

dm7nw8vv

dm7nw8vv1#

DAO方法错误地使用了updateOne,您将$set部分放在了updateOne之外。它应该是,
更新一个用户({_id:uid},{ $设置:用户更新})

相关问题