МЕРН: Как получить предмет по _id из Мангуста, чтобы удалить его, используя - PullRequest
0 голосов
/ 05 июля 2018

У меня есть прореагировавший / редукционный компонент :

import React, { Component } from 'react';
import { connect } from "react-redux";
import _ from 'lodash';
import {
  onDeleteItem,
  onChangeItemState
} from '../actions/actions.js'

import {
  Button
} from 'reactstrap';

const mapStateToProps = state => ({
  trStore: state
});

class Contenttr extends Component {
  deleteItem() {
    this.props.onDeleteItem(this.props.id);
  }
  changeItem() {
    this.props.onChangeItemState(this.props.id);
  }
  render() {
    return  (
      <tr>
        <td className="text-center"><img src="http://via.placeholder.com/100x50" alt="Logo" /></td>
        <td className="text-center">{this.props.keywords}</td>
        <td className="text-center">{this.props.place}</td>
        <td className="text-center"><Button color="danger" size="sm" onClick={this.deleteItem.bind(this)}>Delete</Button></td>
        <td className="text-center"><Button color="primary" size="sm" onClick={this.changeItem.bind(this)}>Change</Button></td>
      </tr>
    );
  }
}

export default connect(mapStateToProps, { onDeleteItem, onChangeItemState })(Contenttr);

Я сделал API , чтобы удалить элемент из mongodb (mongoose):

router.route('/items/:item_id')
    // delete the item with this id (accessed at DELETE http://localhost:3001/api/item/:item_id)
    .delete(function(req, res) {
        Item.remove({
            _id: req.params.item_id
        }, function(err, item) {
            if (err)
                res.send(err);

            res.json({ message: 'Successfully deleted' });
        });
    });

В моем редукторе Я использую его таким образом, чтобы удалить его из состояния:

else if (action.type === "DELETE_ITEM") {
    const delId = action.id;
    const filtered = _.filter(state.filtered,(o) => 
      o.id !== delId
    );
    const itemsList = _.filter(state.filtered,(o) => 
      o.id !== delId
    );
    // console.log('DELETE_ITEM', filtered, "delId", delId);
    return {
      ...state,
      filtered,
      itemsList
    }

Мой файл действия выглядит следующим образом:

export function onDeleteItem(id) {
  return (dispatch) => {
    axios.delete(`http://localhost:3001/api/items/:${id}`)
      .then(res => {
        dispatch({type:"DELETE_ITEM", id: id});
      })
  }
}

Я столкнулся с проблемой, что для удаления элемента с помощью действия мне нужно передать _id от компонента к действию с помощью функции onDeleteItem. Но основной this.props._id показывает мне undefined. Как получить этот _id или правильно переписать API?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...