我正在测试我的put请求,它没有返回任何东西,当我试图通过客户端使用它时,它也不起作用。当我在失眠中测试它时,我得到了一个200的消息,但正文返回null,而不是更新的用户。
下面是通过客户端请求的代码,它也可以更新用户的个人资料照片:
const handleSubmit = async (e) => {
e.preventDefault()
const updatedUser = {
userId: user._id,
username,
email,
password,
}
if (file){
const data = new FormData()
const filename = Date.now()+file.name;
data.append("name",filename)
data.append("file",file)
updatedUser.profilePic = filename;
try {
await axios.put("http://localhost:5000/api/users/"+user._id, updatedUser)
} catch (error) {
console.log(error)
}
}
}
下面是通过我的API请求的代码
router.put("/:id", async (req, res) => {
if (req.body.userId === req.params.id) {
if (req.body.password) {
const salt = await bcrypt.genSalt(10);
req.body.password = await bcrypt.hash(req.body.password, salt);
}
try {
const updatedUser = await User.findByIdAndUpdate(
req.params.id,
{
$set: req.body,
},
{ new: true }
);
res.status(200).json(updatedUser);
} catch (err) {
res.status(500).json(err);
console.log(err)
}
} else {
res.status(401).json("You can update only your account!");
}
});
下面是我的用户模式:
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:"",
}
},
{timestamps:true}
)
module.exports = mongoose.model("User", UserSchema)
1条答案
按热度按时间vkc1a9a21#
试试这个代码: