УДАЛИТЬ запрос в редуксе - PullRequest
       10

УДАЛИТЬ запрос в редуксе

0 голосов
/ 26 апреля 2018

Я пишу CRUD-приложение React Redux с Node.js API.Я борюсь с DELETE part.Я получаю сообщение об успешном удалении, но в моей базе данных ничего не изменилось. Успешное сообщение в консоли

Мне просто интересно, почему оно не удаляет какие-либо данные?

user.reducer:

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
  }
}

user_actions:

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));

}

Кроме того, на стороне сервера я получаю статус успешного удаления

ServerSide Console (200)

Server_Side router:

 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);
    };

Я удалил пользователя с помощью простой команды извлечения в компоненте без избыточности, и я отправил идентификатор в теле запроса на удаление, и он работал, но с избыточным числом только успешное сообщение.

Спасибо за любую помощь

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Ваш код в посте должен работать, за исключением запроса на получение, к URL-адресу должен предшествовать URL-адрес бэкэнда, поэтому, если URL-адрес бэкэнда равен localhost:3000, ваш выбор должен быть:

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;
});
0 голосов
/ 26 апреля 2018

Я обнаружил, что допустил ошибку в URL.Поэтому на сервере в URL я не могу получить доступ к своему идентификатору, и он показал мне неопределенное значение.

Просто я изменил следующие строки: user_action:

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

и server_side router:

app.delete('/removeadmin?:id', function(req, res){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...