我想使用记录名称而不是ID向其余api发送请求。
这是用户填写的表格,用于更新无可用票证。
<div>
<form onSubmit={this.handleSubmit}>
<label className="label">Enter the train</label>
<input type="text" ref="name" placeholder="name" className="inputBox"/>
<label className="label">Enter the no of tickets</label>
<input type="text" ref="tickets" placeholder="no of tickets" className="inputBox"/>
<input type="submit" value="BOOK" className="button"/>
</form>
<input type="submit" value="Show all trains" className="button" onClick={this.showAlltrains}/>
<input type="submit" value="Add a train" className="button" />
<br/><br/><br/><br/>
<table className="table-show-all-trains">
{trains}
</table>
</div>
这是我实施的一种方法,用于向其余的api发送放置请求,并将名称传递给其余的api,以识别证书记录。
handleSubmit: function (event) {
event.preventDefault();
var name = this.refs.name.value;
var noOfTickets = this.refs.tickets.value;
var data = {"name": name, "noOfTickets": noOfTickets};
fetch('/api/trains/' + name{
method : "PUT",
body : JSON.stringify(data),
headers: {'Content-type' : 'application/json'}
}).then(function (data) {
return data.json();
}).then(json => {
this.setState({
trains :json
});
});
},
这是rest api中用于处理放置请求的代码段。
router.put('/trains/:name', function(req, res, next){
Train.findByIdAndUpdate({name: req.params.name}, req.body).then(function(){
Train.findOne({name: req.params.name}).then(function (train) {
res.send(train);
})
})
});
当我使用ID来标识记录时,该应用程序可以工作。但是,让用户输入ID来标识特定记录很不方便。
因此,我从用户那里获得了记录的名称,我需要通过传递该用户输入的记录名称而不是ID来识别数据库中的记录。