有一个简单的文本字段,当用户键入时,将进行 api 调用,该调用将根据用户键入的内容获取人员姓名。例如,当用户按下按钮“A”时,将立即发出 API 请求,并且将从数据库中提取所有以“A”开头的名称。目前的问题是,由于我们有大约 100 万个条目,因此每个请求大约需要 8-10 秒。有没有办法让它更快?
这是我提出的 axios 帖子请求。
fetchingDataOnChange = () => {
let nameValue = this.state.searchName;
var myParams = {
nameValue: nameValue
}
axios.post('/get-hcp-data', myParams)
.then((res) => {
const hcps = res.data;
this.setState({ hcps: hcps, hcpName: Object.values(hcps.hcp_details_concat) })
console.log(res);
}, (error) => {
console.log(error);
});
}
这是flask中的函数:
@app.route('/get-hcp-data', methods=['GET', 'POST'])
def get_hcp_data():
value = request.get_json()
newValue = value['nameValue']
engine = connect_pg()
sql = "select * from dim_hcp_details where lower(hcp_name) like lower('"+newValue+"%') limit 50"
hcp_details = pd.read_sql_query(sql,engine)
hcp_details['hcp_details_concat'] = "[" + hcp_details['hcp_id'] + "]" + hcp_details['hcp_name']
hcp_dict = hcp_details.to_dict()
return jsonify(hcp_dict)