Mongodb axios和mongo-尝试使用映射的_id作为周界进行删除。它以200作为响应,但对象仍保留在数据库中
尝试使用react、axios和mongoose制作一个简单的CRUD应用程序 这是我的axios:Mongodb axios和mongo-尝试使用映射的_id作为周界进行删除。它以200作为响应,但对象仍保留在数据库中,mongodb,reactjs,mongoose,axios,Mongodb,Reactjs,Mongoose,Axios,尝试使用react、axios和mongoose制作一个简单的CRUD应用程序 这是我的axios: deleteUser(id) { axios.delete(`${rootUrl}/api/users/${this.state.id}`, { params: { id } }) .then(response => { // this.setState({ users: response.data }); conso
deleteUser(id) {
axios.delete(`${rootUrl}/api/users/${this.state.id}`, {
params: { id }
})
.then(response => {
// this.setState({ users: response.data });
console.log('deleteUser response', response, this.state);
});
}
router.delete('/users/', (req, res) => {
const { id } = req.body;
User.findByIdAndDelete(id, (error, data) => {
if (error) {
console.log('error in deleting!');
throw error;
} else {
console.log('user has been deleted', data);
res.status(204).json(data);
}
});
});
state = {
users: [],
id: ''
};
以下是相关的API路径:
deleteUser(id) {
axios.delete(`${rootUrl}/api/users/${this.state.id}`, {
params: { id }
})
.then(response => {
// this.setState({ users: response.data });
console.log('deleteUser response', response, this.state);
});
}
router.delete('/users/', (req, res) => {
const { id } = req.body;
User.findByIdAndDelete(id, (error, data) => {
if (error) {
console.log('error in deleting!');
throw error;
} else {
console.log('user has been deleted', data);
res.status(204).json(data);
}
});
});
state = {
users: [],
id: ''
};
它返回
DELETE /api/users/?id=5b34e5b5dfef8b4sd234567 204 47.816 ms - -
但当我获得用户时,被删除的用户仍然存在
这是我映射到的渲染状态。我认为我正确地拉入了id,但我不确定还要尝试什么:
{this.state.users.map(user => {
return (
<div className="Users1" key={user._id}>
<Card>
<CardBody>
<CardTitle>{user.username}</CardTitle>
<CardText>{user._id}</CardText>
<Button onClick={() => this.deleteUser(user._id)}
key={user._id}
type="button"
color="danger"
>
X
</Button>
</CardBody>
</Card>
</div>
);
})}
我也有类似的问题。通过查看API服务器上的req.query属性,而不是req.body,我获得了成功:
const { id } = req.query;
我通过将整个req对象转储到控制台来解决这个问题
在客户端,我的请求没有在URL中包含id。我只是把它包含在params对象中。这似乎有帮助。因此,代码中的等效调用如下所示:
axios.delete(`${rootUrl}/api/users/`, {
params: { id }
})
我希望这有帮助。我还只是在学习React Native,所以我算不上专家。但是我想分享我的工作,以防它对其他人有帮助。你能记录
req.body
?当我记录服务器端的req.body时,它会返回一个空对象{}。奇怪的是,如果我使用Postman将id作为body中的一个对象来删除,那么记录req.body确实会显示id,但它仍然没有被删除。客户端肯定出了问题。