所以我尝试更新特定信息并留下其他信息。但现在的情况是我仍然应该输入其他信息,否则它将是一个空的。这是我发送信息后收到的信息:
"studentId": "",
因此,在本例中,管理员可以更改studentId信息,但我现在只想更改状态。(反之亦然)
这是我的前端。我把它存储到状态,
const [data,setData] = useState({
studentId: '',
status: ''
})
const handleClick = async (e) => {
e.preventDefault()
try {
await userRequest.put(`/users/${userId}`,data)
} catch (error) {
console.log({error: error.message})
}
}
<div className="formInput">
<label>Student ID</label>
<input type="text" placeholder={userInfo.studentId} onChange={(e) =>
setData({...data, studentId: e.target.value})} />
</div>
<div className="formInput">
<FormControl sx={{ m: 1, minWidth: 200 }}>
<InputLabel id="demo-simple-select-helper-label">Status</InputLabel>
<Select
labelId="demo-simple-select-helper-label"
id="demo-simple-select-helper"
defaultValue={userInfo.status}
label="Status"
onChange={(e) => setData({...data, status: e.target.value})}
>
<MenuItem value="">
<em>None</em>
</MenuItem>
<MenuItem value="pending">Pending</MenuItem>
<MenuItem value="active">Active</MenuItem>
<MenuItem value="disable">Disable</MenuItem>
</Select>
</FormControl>
</div>
Backend.js
router.put('/:id', async (req,res) =>{
if(req.body.password){
req.body.password = CryptoJS.AES.encrypt(
req.body.password,
process.env.PASSWORD_SEC)
.toString();
}
try {
const updatedUser = await User.findByIdAndUpdate(req.params.id, {
$set: req.body
}, {new: true})
res.status(200).json(updatedUser)
console.log(updatedUser)
} catch (error) {
res.status(500).json({message:error.message})
}
})
1条答案
按热度按时间ahy6op9u1#
我不知道这是不是一个好的方法,但我改变了这一点
像这样改变手柄