我尝试每次更新1000个项目,并在我的数据库中的特定列中显示一些值
ParseQuery<ParseObject> searchQuery = ParseQuery.getQuery("PhoneBook");
searchQuery.whereDoesNotExist("search");
searchQuery.setLimit(1000);
public void done(List<ParseObject> results, ParseException e) {
if (e == null) {
for(ParseObject contact:results){
contact.put("search","someNewValue");
contact.saveInBackground();
}
Toast.makeText(MainActivity.this, "done", Toast.LENGTH_SHORT).show();
} else {
}
}
});
实际上只有200-300更新,即使我运行1000项。 快速saveInBackground()有没有限制?
我应该使用saveEvantually()
吗?
答案 0 :(得分:1)
您应该将所有对象存储在List中,然后调用saveAllInBackground
。试试这样:
searchQuery.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> results, ParseException e) {
if (e == null) {
ArrayList<ParseObject> phoneObjectList=new ArrayList<ParseObject>();
for(ParseObject contact:results){
contact.put("search","someNewValue");
phoneObjectList.add(contact);
}
ParseObject.saveAllInBackground(phoneObjectList, new SaveCallback() {
@Override
public void done(ParseException e) {
// TODO Auto-generated method stub
if(e==null){
Log.d(TAG, "saved successfully");
Toast.makeText(MainActivity.this, "done", Toast.LENGTH_SHORT).show();
}else{
Log.d(TAG, "Error in saving view count :"+e.getMessage());
}
}
});
} else {
}
}
});
答案 1 :(得分:0)
我收到了来自解析的电子邮件:
您的应用...最近超出了您计划请求的75% 限制30个请求/秒。对Parse超出的额外请求 将丢弃30个请求/秒的速率,返回错误 错误代码155。
保存数据可能会超过超过30个请求/秒。
所以,应该考虑保存大量数据......
它的外观如下:
答案 2 :(得分:0)
去过那里,做到了。 saveAllInBackground()
很糟糕。我不得不为普通saveInBackground()
的每个对象使用循环而不回调。是的 - 从1000个200,300保存对象是正常的(对于该服务)。我认为它不适用于批量保存。是的 - 通过节省这么多,很容易超出限制。