2016-04-12 7 views
0

ユーザーが部屋に入ることができる機能を開発しています。私は部屋のデータを保持するためにParseを使用しています。私の問題は、新しいユーザーが部屋に加わり、その部屋の既存のユーザーが部屋のアクティビティを再開すると、既存のユーザーに新しいユーザーが表示されないということです。構文解析クエリがonResumeで新しいデータを返さない

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

は今、エントリは次のようになります。

​​

それから私は、上記のクエリを実行し、ボタンを押してください。そしてまだは、私が1を期待したときに0を返します。

私は何が問題なのかよく分かりません。間違った質問を設定しましたか?

要するに、ユーザーAがルームを作成すると、Parseクエリでは、ユーザー数が0として、と予想されます。が返されます。ユーザーBがユーザーAの会議室に参加したときに、のSTILLは、0とではなく、となります。これは予期せぬことであり、進める方法がわかりません。

+0

Parseは来年退職することを覚えておいてください。そうすれば、翌年まで解析していれば、あなたのアプリはもう動かなくなります。 –

答えて

0

私のアプリケーションがデータベースに正しく照会しない理由の原因を突き止めました。理由は、 "enableLocalDatastore"にParseを呼び出したので、新しいクエリを試すたびに、アプリケーションはキャッシュされた結果からクエリを実行するためです。

私がしたことは、ローカルデータストアを無効にして、すべてが期待通りに機能していたことです。

面白いことに、私のチームと私はこのアプリケーションを構築しているので、開発サイクルの始め(6か月前)に小さなデータをテストして無効にするのを忘れてしまいました。技術的負債はPITAです。

あなたが行ったことがデータベースにはっきりと示されていても、Parseクエリが期待した結果を返さない場合は、ローカルデータストアを有効にしていないことを確認してください。

関連する問題