解析查询始终返回空列表

时间:2016-07-29 15:43:09

标签: mongodb parse-platform mongodb-query

我有以下问题:

我有两个Android应用程序:在一个应用程序中,我通过Parse向Mongo DB添加数据,而在另一个应用程序中,我想检索从第一个应用程序添加的信息。

问题是,每当我尝试查询数据库时,在第二个应用程序中,我得到一个空列表。我已经使用API​​ KEY检查了Mongo数据库中的密钥,我的应用程序中的所有内容都显示正常。

以下是第二个应用程序在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();

}

请帮助,因为我已经在这个事情上挣扎了将近3天。

1 个答案:

答案 0 :(得分:0)

当我向Collection DB添加信息时,我正在使用的ParseObject已添加此行,我在应用程序中初始化Parse:

defaultACL.setPublicReadAccess(真);

关于如何初始化Parse的完整代码:

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);
}

}