node.js - 如何通过从 Reactjs 向数据库发出 get 请求来增加数据库属性
问题描述
我正在研究Mernstack。我有一个名为 Events 的模型,Events 有标题、描述、startingDate 和 closingDate 属性。当一个事件被创建时,人们可以通过点击一个按钮来表明他们正在参加这个事件,这个按钮将going
通过将数字增加 1 来更新该事件中的另一个属性。这仅适用于 Node 和 Expressjs,但现在我正在将 React 集成到 Node,我不知道如何使其工作。
现在我的问题是,如何通过单击链接向 My Express 路由GET
发出请求,以便Event 模型中的属性增加 1?React
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 工作正常,我只是在寻找一种方法来在点击链接时将事件内的 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>
解决方案
由于您的端点正在使用更新的属性返回更新的事件记录,因此going
只需使用该值设置状态。
axios.get('http://localhost:9000/events/'+this.props.match.params.id+'/going')
.then(res => {
this.setState({
going: res.data.going
})
})
ifres.data.going
是返回值的形状。
推荐阅读
- php - 如何从单个表达式中的动态对象中检索静态属性?
- css - 使用 javascript 动态设置 CSS :before attr
- c++ - DirectX 12 和 C++ CLI:无法使用 IID_PPV_ARGS
- java - 如何从字符串数组中获取字符串,以便与 SetText 一起使用?安卓工作室
- android - Firebase setPersistenceEnabled 错误删除数据?
- amazon-web-services - 使用已创建的角色部署 AWS SAM 功能
- gremlin - 获取连接到所有当前顶点的顶点
- php - 在 Symfony 服务中获取路由名称
- javascript - dispatchEvent(new Proxy(event, {}) 不起作用
- c# - 在与调用按钮的父级相同的位置显示表单