解析查询不在onResume上返回新数据

时间:2016-04-12 02:52:41

标签: android parse-platform

我正在开发一个功能,用户可以加入一个房间,我正在使用Parse来保存房间的数据。我的问题是,当新用户加入房间并且该房间的现有用户恢复房间的活动时,现有用户不会看到新用户。

Entry before a user joined

所以这是我的桌子的一个条目,用户创建了一个房间,但还没有人加入。

这是我的GameOnSession类,它是ParseObject类的扩展。

@ParseClassName("GameOnSession")
public class GameOnSession extends ParseObject {
    public JSONArray getParticipants() { return getJSONArray("participants"); }

    public String getNumberOfParticipants() {
        int getParticipantsNumber = getParticipants().length();
        return String.valueOf(getParticipantsNumber);
    }

    public static ParseQuery<GameOnSession> getQuery() {
        return ParseQuery.getQuery(GameOnSession.class);
    }
}

这是我的查询,我跑来查看房间里的人数。

ParseQuery<GameOnSession> query = ParseQuery.getQuery(GameOnSession.class);
query.whereEqualTo("objectId", QueryPreferences.getStoredSessionId(getActivity()));
query.findInBackground(new FindCallback<GameOnSession>() {
    @Override
    public void done(List<GameOnSession> objects, ParseException e) {
        GameOnSession sess = objects.get(0);
        Log.d("GAMEONSESSION", "Current # " + sess.getNumberOfParticipants());
    }
});

所以它返回我的期望:0。

现在,当新用户加入房间时,条目如下所示。

Entry after a user joined

然后我按下一个运行上述查询的按钮。当我期待1.

时,仍然返回0

我不确定这里的问题是什么,我的查询设置错了吗?

简而言之,当用户A创建一个房间时,Parse查询会将用户数返回为0 预期。当用户B加入用户A的房间时,解析查询 STILL 会将用户数返回为0且 1.这是意料之外的,我不知道如何继续。< / p>

1 个答案:

答案 0 :(得分:0)

所以我找到了为什么我的应用程序无法正确查询数据库的原因。原因是我把Parse称为&#34; enableLocalDatastore&#34;因此,每当我尝试新查询时,应用程序都会从​​缓存的结果中进行查询。

所以我所做的是禁用本地数据存储,并且所有内容都按预期工作。

有趣的是,我的团队和我构建此应用程序在开发周期(6个月前)开始时启用本地数据存储来测试一个小功能并忘记禁用它。技术债务是PITA。

因此,如果您的Parse查询没有返回您期望的内容,即使数据库清楚地显示您已完成的操作,请检查您是否未启用本地数据存储区!