2016-07-29 8 views
1

Ich habe folgendes Problem:Parse Abfrage gibt immer eine leere Liste

Ich habe zwei Android Apps: In einer App I fügen Sie Daten zu Mongo DB über Parse und in der anderen App möchte ich die Informationen abzurufen hinzugefügt von die erste App

Das Problem ist, dass in der zweiten App jedes Mal, wenn ich versuche, die DB abzufragen, bekomme ich eine leere Liste. Ich habe mit dem API KEY, mit den Schlüsseln aus der Mongo DB, nachgesehen und in meiner App scheint alles in Ordnung zu sein. Hier

ist der Code für die zweite App Informationen in einem RecyclerView

public class ParseDb extends Application { 

@Override 
public void onCreate() { 
    super.onCreate(); 

    // Enable Local Datastore. 
    Parse.enableLocalDatastore(this); 

    // Add your initialization code here 
    Parse.initialize(new Parse.Configuration.Builder(getApplicationContext()) 
      .applicationId(API_KEY) 
      .server("http://injuriesandsuspensions.herokuapp.com/parse/") 
      .build() 
    ); 




    ParseUser.enableAutomaticUser(); 
    ParseACL defaultACL = new ParseACL(); 
    // Optionally enable public read access. 
    defaultACL.setPublicReadAccess(true); 
    ParseACL.setDefaultACL(defaultACL, true); 

} 

public class MainActivity extends Activity { 

private List<AboutTeams> aboutTeamsList = new ArrayList<AboutTeams>(); 
private RecyclerView recyclerView; 
private GamesAdapter gamesAdapter; 

public void retrieveGamesFromDatabase(){ 
    ParseQuery<ParseObject> query = ParseQuery.getQuery("InjuriesAndSuspensions"); 
    query.whereEqualTo("score", "none"); 
    query.findInBackground(new FindCallback<ParseObject>() { 
     public void done(List<ParseObject> gamesList, ParseException e) { 
      if (e == null) { 
       Log.d("score", "Retrieved " + gamesList.size() + " scores"); 
       for(int i = 0; i < gamesList.size(); i++){ 
        AboutTeams aboutTeams = new AboutTeams(); 
        aboutTeams.setId(String.valueOf(gamesList.get(i).getObjectId())); 
        aboutTeams.setScore(String.valueOf(gamesList.get(i).get("score"))); 
        aboutTeams.setHomeTeam(String.valueOf(gamesList.get(i).get("homeTeam"))); 
        aboutTeams.setHomeTeamMissing(String.valueOf(gamesList.get(i).get("homeTeamMissingPlayers"))); 
        aboutTeams.setAwayTeam(String.valueOf(gamesList.get(i).get("awayTeam"))); 
        aboutTeams.setAwayTeamMissing(String.valueOf(gamesList.get(i).get("awayTeamMissingPlayers"))); 
        aboutTeams.setDate(String.valueOf(gamesList.get(i).get("gameDate"))); 
        Log.d("About Teams " , aboutTeams.toString()); 
        aboutTeamsList.add(aboutTeams); 
        gamesAdapter.notifyDataSetChanged(); 
       } 

      } else { 
       Log.d("score", "Error: " + e.getMessage()); 
      } 
     } 
    }); 
} 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_listview); 

    recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 

    gamesAdapter = new GamesAdapter(aboutTeamsList); 

    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
    recyclerView.setLayoutManager(mLayoutManager); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 
    recyclerView.setAdapter(gamesAdapter); 

    retrieveGamesFromDatabase(); 

} 

Bitte helfen zurückzuholen als `ve für fast 3 Tage mit dieser Sache zu kämpfen.

+0

wenn Sie leere Liste bekam das OK ist, ob Ihre Anfrage direkt nichts gefunden tut? Sie sollten einige Protokoll oder den Fehler, den Sie erhalten, ... –

+0

Meine Abfrage query.whereEqualTo ("score", "none"); hat das in der Datenbank. Nicht die Abfrage ist das Problem, da ich keinen Fehler bekomme. Ich bekomme immer eine leere Liste. Ich habe auch versucht, alle Objekte von "InjuriesAndSuspensions" zu bekommen, aber immer noch leer. – dragosiv

+0

Verwenden Sie das Dashboard, um die ACL-Prop-Werte auf den Zielparsenobjekten zu überprüfen, und stellen Sie dann sicher, dass die Abfrage über die Zugriffssteuerungsliste für Zielobjekte entweder Hauptschlüssel oder abgeleiteten Zugriff von den Berechtigungen der zugehörigen Benutzer hat. –

Antwort

0

Als ich Informationen zur Kollektions DB Zugabe wurde die ParseObject I didn `t wurde unter Verwendung haben diese Zeile hinzugefügt, wo ich die Initialisierung Parse in meiner Anwendung:

defaultACL.setPublicReadAccess (true);

komplette Code, wie Parse initialisieren:

public class AddToDB extends Application { 

@Override 
public void onCreate() { 
    super.onCreate(); 

    // Enable Local Datastore. 
    Parse.enableLocalDatastore(this); 

    // Add your initialization code here 
    Parse.initialize(new Parse.Configuration.Builder(getApplicationContext()) 
      .applicationId(API_KEY) 
      .server(SERVER_URL) 
      .build() 
    ); 


    ParseUser.enableAutomaticUser(); 
    ParseACL defaultACL = new ParseACL(); 
    // Optionally enable public read access. 
    **defaultACL.setPublicReadAccess(true);** 
    ParseACL.setDefaultACL(defaultACL, true); 
} 

}