Как увеличить атрибут увеличения базы данных на единицу, сделав запрос на получение в базу данных из Reactjs - PullRequest
0 голосов
/ 08 июля 2020

Я работаю над Mernstack. У меня есть модель под названием Events, у событий есть атрибуты title, description, startDate и closedDate. когда создается событие, люди могут указать, что они собираются для этого события, нажав кнопку, и эта кнопка обновит другой атрибут внутри этого события с именем going, увеличив число на 1. это работало с Node и Express Только js, но теперь, когда я интегрирую React to Node, я не знаю, как заставить его работать.

Теперь мой вопрос: как мне сделать запрос GET от React к Мой маршрут Express, щелкнув ссылку, чтобы атрибут going внутри модели событий был увеличен на единицу?

Вот мой маршрут

 router.get("/:id/going", async (req, res, next) => {
   Event.findById(req.params.id, function(err, event) {
      if (!event) {
       return next(new Error('Could not load Document'));
      }else {
      event.going += 1;
      event.save();
      res.json(event)
     }
   });
});

и вот мой конструктор в Reactjs. Примечание: мои Event и EventComment работают нормально, я только ищу способ увеличить значение атрибута going внутри события на 1 при каждом нажатии ссылки.

 constructor(props) {
    super(props);
    this.state = {
        eventcomments: [],
        event: '',
        name: '',
        description:'',
        going: '',

    };
}

запрос GET, который я хочу использовать для запуска маршрута события для увеличения числа на 1

 axios.get('http://localhost:9000/events/'+this.props.match.params.id+'/going')
    .then(res => {
        this.setState({
            going: '',
        })
    })

, и это ссылка, которую я хочу, чтобы пользователь щелкнул, чтобы атрибут going в маршруте события увеличился на 1

<Link to={"/events/"+this.state.event._id+"/going"}>Going</Link>

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Спасибо, ребята. Мне удалось заставить его работать. Вот что я сделал.

  updateGoing = going => {
    axios.get('http://localhost:9000/events/'+this.props.match.params.id+'/going')
    .then(response => {
        his.setState({event: response.data})
});

и заменил ссылку на кнопку

<button onClick={() => this.updateGoing(this.state.event._id)}> Going </button>
0 голосов
/ 08 июля 2020

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

axios.get('http://localhost:9000/events/'+this.props.match.params.id+'/going')
.then(res => {
    this.setState({
        going: res.data.going
    })
})

если res.data.going - это то, как формируется возвращаемое значение.

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