【发布时间】:2020-08-05 11:20:39
【问题描述】:
我有一个系统,它从我的服务器中提取数据并通过 android studio 将其存储到移动 SQL 数据库中。它有效,但像 30 分钟一样缓慢。我的数据库中有大约 86000 条记录,并希望将它们全部从服务器中提取出来。最好的方法是什么?
目前我从服务器获取计数,然后查询服务器数据库,直到找到每个 ID,然后将结果发送回我的移动应用程序。
app.post("/get_data", function(req, res)
{
var Id_request = req.body.Id_request;//The requested ID
var query = {Val_String : Id_request};//Query value
//console.log(query);
//Data.find({}, function(err, result) {//Finds all data
Data.findOne(query, function(err, result) {//Finds all data
if (err) {
//res.status(400).send(err);
console.log("Sending error");
res.status(200).send();
} else {
return res.json(result);
}
});
});
我在每个 ID 的拉取请求中使用了一个反函数
private void call_method()
{
HashMap<String, String> map = new HashMap<>();
map.put("Id_request", Integer.toString(data_pointer));//The ID value
Call<Fetch_result> call = retrofitInterface.executeGet_data(map);//Run the post
call.enqueue(new Callback<Fetch_result>() {
//call.enqueue(new Callback<Fetch_result>() {
@Override
public void onResponse(Call<Fetch_result> call, Response<Fetch_result> response) {
if (response.code() == 200)//Successful login
{
D1= response.body().getT1_String();
D2= response.body().getT2_String();
data_pointer = data_pointer + 1;
boolean result = BLE_DB.addData_Downloaded(D1,D2);//Add data
if(data_pointer<= Total_entries) {//Call method again
call_method();//Recursive here
}else if (data_pointer > Total_entries){
Utils.toast(getApplicationContext(),"All data received");
}
} else if (response.code() == 404) {
Utils.toast(getApplicationContext(), "Get data fail");
}
}
@Override
public void onFailure(Call<Fetch_result> call, Throwable t) {
Utils.toast(getApplicationContext(), "Get data error");
}
});
}
我怎样才能加快速度或以不同的方式加快速度?
【问题讨论】:
-
是否必须获取所有数据?没有办法按需获取数据吗?
-
是的,不幸的是我想拿这批货。因为它是必不可少的数据日志。
标签: java android node.js mongodb