检索对象时出错 - Parse - Android

时间:2015-11-13 00:52:09

标签: java android object parse-platform

我遇到了在Parse中检索对象的问题。

我有一个子类"用户"这是扩展ParseUser类。

直到这里,一切都还好!

但是,我想要检索一个User对象,其中" objectId"等于:" movo1s5PcC"

所以,之前,我正在使用" query.whereEqualsTo(key,value)"

然后我开始使用" query.getInBackground(" value")"

但是,在这两种情况下,它都会出现同样的错误:

com.parse.ParseException:找不到查询结果

MainActivity.class - >的 imgur.com/nHEUzDe.png

// OnCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    InstanceElements();
    OnClickListeners();

    String a = mUserRepository.GetUserObjectId(); // retrieves: "movo1s5PcC"
    User b = mUserRepository.GetUser(a);
}

呼叫

UserRepository.class - >的 imgur.com/IX9pWko.png

public User GetUser(String objId) { // objId = "movo1s5PcC"
    User response = this.User.getUser(objId);

    return response;
}

呼叫

User.class - >的 i.imgur.com/Rao01OC.png

public User getUser(String objId) { // objId = "movo1s5PcC"
    try {
        ParseQuery<User> query = ParseQuery.getQuery("User");
        query.getInBackground(objId);
        User abc = query.getFirst();
        return abc;
    } catch (Exception e) { //Error: com.parse.ParseException: no results found for query
        throw new UnsupportedOperationException();
    }
}

Parse.com - 我在Parse的课程 http://i.imgur.com/oupIQfl.png

1 个答案:

答案 0 :(得分:0)

您正在应用程序进程上调用getFirst,而Parse仍然在后台获取结果(在另一个进程上)。该错误意味着您要求null / empty对象的第一项。

您必须等待后台查询完成并在回调上调用getFirst。

当然,在尝试从中获取任何项目之前,应始终检查空值和空对象。

编辑: 这是你应该怎么做的: https://www.parse.com/docs/android/guide#queries

当您从服务器获得答案时,会调用“完成”功能。

当你这样做时:

1- query.getInBackground(objId);
2- User abc = query.getFirst();

您假设在第1行完成时将执行第2行,但这不是后台处理的工作方式。第2行将在服务器回答之前执行,“query”将为null或为空。

这就是为什么第2行和第2行的代码必须在回调函数“完成”上。 “完成”将在服务器响应时执行。