对于poster,更新在nodejs中不起作用


router.put("/update/:username", update);
function update(req, res, next) {
userService
.update(req.params.username, req.body)
.then(() => res.json({}))
.catch((err) => next(err));
}
async function update(username, userParam) {
const user = await User.findById(username);
if (!user) throw "User not found";
Object.assign(user, { status: userParam.status });
if (await user.save()) {
throw 'Username "' + user.username + '" is updated';
}
}

您使用的是findById,但传递的是用户名。您应该使用findOne
试着这样简化你的代码:

router.put("/update/:username", update);
async function update(req, res, next) {
try {
const user = await User.findOne({ username: req.params.username });
if (!user) return res.status(400).send('User not found');
user.status = req.body.status

await user.save()
res.status(201).send('User updated')
} catch (err) {
next(err)
}
}

最新更新