ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("username", "female");
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects, com.parse.ParseException e) {
if (e == null) {
Toast.makeText(getApplicationContext(), "Username Found",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Username Not Found",
Toast.LENGTH_LONG).show();
}
}
});'
我对这些代码有疑问,我想搜索其他用户名,请帮帮我。 我已经编写了代码,但总是进入“找到用户名”,但在数据库中没有这样的名称。
答案 0 :(得分:2)
你错了,因为在 findInBackground 回调中,你目前只检查 e 变量(如果它是否为空)而不是对象强>大小。如果查询从Cloud Code返回有效结果,则异常为alwasy null (在这种情况下,对象不为null且大小为0或大于);如果查询的执行引发异常/错误,则异常变量被赋值仅。
要检查查询是否返回记录,您必须检查对象的大小(List):
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("username", "female");
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> objects, com.parse.ParseException e) {
if (e == null) {
if (objects.size() > 0) {
Toast.makeText(getApplicationContext(), "Username Found",
Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(getApplicationContext(), "Username Not Found",
Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(getApplicationContext(), "An error has occurred!",
Toast.LENGTH_LONG).show();
}
}
});
考虑将查询限制为1个结果的机会(如果您查找一个特定记录)或使用 getFirstInBackground 方法来提高查询性能。