我得到了200响应,但它似乎没有更新用户,我还使用令牌来匹配它与用户ID,然后检查他们是否更新密码,在这种情况下,我将散列它与bcrypt。
我有控制台记录的req.body和它返回一个空对象,因此我认为这是为什么它不更新,我想知道为什么会这样?
router.put('/:id', verify, async(req, res) => {
if (req.user.id === req.params.id || req.user.isAdmin) {
if (req.body.password){
req.body.password = await bcrypt.hash(req.body.password, 5)
}
try {
const updatedUser = await User.findByIdAndUpdate(req.params.id, {$set: req.body},{new: true})
res.status(200).send(updatedUser)
} catch (error) {
res.status(500).send(error)
}
} else {
res.status(403).send("You are not allowed to update this user")
}
})
字符串
下面是用户的模式:
const mongoose = require('mongoose');
const UserSchema = new mongoose.Schema({
username: {
type: String,
required: true,
unique: true
},
email: {
type: String,
required: true,
unique: true
},
password: {
type: String,
required: true,
},
profilePic: {
type: String,
default: ""
},
isAdmin: {
type: Boolean,
default: false
}
}, {timestamp: true}
)
module.exports = mongoose.model("User", UserSchema)
型
1条答案
按热度按时间but5z9lq1#
这看起来像一个快速后端,对吧?
如果你的请求体是空的,显然没有什么会被更新。确保发送格式为JSON的请求(如{isAdmin:true}),并使用一些东西来解析body请求,如bodyParser(https://expressjs.com/en/resources/middleware/body-parser.html)
如果您需要更多帮助,请发布完整的API请求,请求体的console.log和完整的.explain()(https://masteringjs.io/tutorials/mongoose/explain)