我正在开发一个功能,用户可以加入一个房间,我正在使用Parse来保存房间的数据。我的问题是,当新用户加入房间并且该房间的现有用户恢复房间的活动时,现有用户不会看到新用户。
所以这是我的桌子的一个条目,用户创建了一个房间,但还没有人加入。
这是我的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。
现在,当新用户加入房间时,条目如下所示。
然后我按下一个运行上述查询的按钮。当我期待1.
时,仍然返回0我不确定这里的问题是什么,我的查询设置错了吗?
简而言之,当用户A创建一个房间时,Parse查询会将用户数返回为0 预期。当用户B加入用户A的房间时,解析查询 STILL 会将用户数返回为0且不 1.这是意料之外的,我不知道如何继续。< / p>
答案 0 :(得分:0)
所以我找到了为什么我的应用程序无法正确查询数据库的原因。原因是我把Parse称为&#34; enableLocalDatastore&#34;因此,每当我尝试新查询时,应用程序都会从缓存的结果中进行查询。
所以我所做的是禁用本地数据存储,并且所有内容都按预期工作。
有趣的是,我的团队和我构建此应用程序在开发周期(6个月前)开始时启用本地数据存储来测试一个小功能并忘记禁用它。技术债务是PITA。
因此,如果您的Parse查询没有返回您期望的内容,即使数据库清楚地显示您已完成的操作,请检查您是否未启用本地数据存储区!