你能从解析查询中提取答案吗?

Can you pull an answer out of a parse query?

我正在尝试制作一个应用程序,但我 运行 遇到无法从查询中提取信息的问题。

我的代码看起来像这样:

// This is to validate there is an email    
private boolean isEmail(String email) {

      ParseQuery<ParseUser> query = ParseUser.getQuery();
      query.whereEqualTo("email", email);
      query.getFirstInBackground(new GetCallback<ParseUser>() {
          @Override
          public void done(ParseUser object, ParseException e) {
              if (object == null) {
                  Log.d("Login User", "The getFirst request failed. Probably because no associated account found");
                  return false
              }
              else {
                  return true
              }
          }
      });
}

但是正如您所看到的那样,具有“return”语句的地方会因为调用它们的位置而吐出错误。

有什么方法可以执行 return 语句吗?

您可以使用 query.getFirst 而不是 query.getFirstInBackground。请注意,它会阻塞主线程。您可能希望重新设计您的函数以接收一个回调函数,该回调函数将随结果一起回调。如果你真的想保留签名,那就是要走的路:

private boolean isEmail(String email) {
    ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.whereEqualTo("email", email);
    try {
        ParseUser object = query.getFirst();
        return true;
    } catch (ParseException e) {
        return false;
    }
}

另请注意,使用此方法您将只能检索当前用户,因为 return 其他用户需要主密钥。