Mongodb axios和mongo-尝试使用映射的_id作为周界进行删除。它以200作为响应,但对象仍保留在数据库中

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

尝试使用react、axios和mongoose制作一个简单的CRUD应用程序

这是我的axios:

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,但它仍然没有被删除。客户端肯定出了问题。