首页 > 解决方案 > 如何通过从 Reactjs 向数据库发出 get 请求来增加数据库属性

问题描述

我正在研究Mernstack。我有一个名为 Events 的模型,Events 有标题、描述、startingDate 和 closingDate 属性。当一个事件被创建时,人们可以通过点击一个按钮来表明他们正在参加这个事件,这个按钮将going通过将数字增加 1 来更新该事件中的另一个属性。这仅适用于 Node 和 Expressjs,但现在我正在将 React 集成到 Node,我不知道如何使其工作。

现在我的问题是,如何通过单击链接向 My Express 路由GET发出请求,以便Event 模型中的属性增加 1?Reactgoing

这是我的活动路线

 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 工作正常,我只是在寻找一种方法来在点击链接时将事件内的 go 属性值增加 1。

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

    };
}

我想用来触发事件路由以将数字增加 1 的 GET 请求

 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>

标签: node.jsreactjsexpress

解决方案


由于您的端点正在使用更新的属性返回更新的事件记录,因此going只需使用该值设置状态。

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

ifres.data.going是返回值的形状。


推荐阅读