首页 > 解决方案 > redux 中的 DELETE 请求

问题描述

我正在使用 Node.js API 编写一个 React Redux CRUD 应用程序。我正在努力删除部分。我收到了成功的删除消息,但我的数据库中没有任何变化。控制台中的成功消息

我只是想知道为什么它不删除任何数据?

用户减速器:

import { userConstants } from '../_constants';

export function users(state = {}, action) {

  switch (action.type) {

    case userConstants.GETALL_REQUEST:
      return {
        loading: true
      };
    case userConstants.GETALL_SUCCESS:
      return {
        items: action.users
      };
    case userConstants.GETALL_FAILURE:
      return { 
        error: action.error
      };
    case userConstants.DELETE_REQUEST:
      // add 'deleting:true' property to user being deleted
      return {
        ...state,
        items: state.items.map(user =>
          user.id === action.id
            ? { ...user, deleting: true } 
            : user
        )
      };
    case userConstants.DELETE_SUCCESS:
      // remove deleted user from state
      return {
        items: state.items.filter(user => user.id !== action.id)
      };
    case userConstants.DELETE_FAILURE:
      // remove 'deleting:true' property and add 'deleteError:[error]' property to user 
      return {
        ...state,
        items: state.items.map(user => {
          if (user.id === action.id) {
            // make copy of user without 'deleting:true' property
            const { deleting, ...userCopy } = user;
            // return copy of user with 'deleteError:[error]' property
            return { ...userCopy, deleteError: action.error };
          }

          return user;
        })
      };
    default:
      return state
  }
}

用户操作:

export const userService = 
{
    delete: _delete,
};


function _delete(id) {

    const requestOptions = {
        method: 'DELETE',
        // headers: authHeader(),            
    };

    return fetch(`/removeadmin/${id}` , requestOptions).then(handleResponse);
}

AdminListPage 组件:

delete(){

this.props.dispatch(userActions.delete(this.state.delete_user._id));

}

此外,在服务器端,我收到了成功的删除状态

服务器端控制台(200)

Server_Side 路由器:

 app.delete('/removeadmin/:id', function(req, res)

{

        var sent_url = url.parse(req.url, true),
            qdata = sent_url.query, 
            sent_id = qdata.id;
        console.log('id ' + sent_id);

        admin.removeadmin(sent_id, function(err, user) {
            if (err)
                throw err;

        });

Server_Side删除功能:

 module.exports.removeadmin = function(id, callback){
     var query = { _id: id };
     Admin.remove(query, callback);
    };

我在没有 redux 的组件中通过简单的 fetch 命令删除了一个用户,并且我在删除请求的正文中发送了 id,它正在工作,但 redux 只是成功的消息。

感谢您的任何帮助

标签: node.jsreactjsreact-redux

解决方案


您在帖子中的代码应该可以工作,除了 fetch 请求,url 应该在后端 url 前面,所以如果后端 url 是localhost:3000您的 fetch 应该是:

return fetch(`http://localhost:3000/removeadmin/${id}`, 
requestOptions).then(handleResponse);

在您的服务器端路由器中,您可以像这样访问您的 id 参数:

app.delete('/removeadmin/:id', function(req, res)
{
   var send_id = req.params.id;
    admin.removeadmin(sent_id, function(err, user) {
       if (err)
          throw err;
});

推荐阅读