2016-07-29 4 views
1

나는 다음과 같은 문제가있다 :구문 분석 쿼리는 항상 빈 목록을 반환

나는이 안드로이드 애플 리케이션을 가지고 하나의 응용 프로그램에서 나는 구문 분석을 통해 몽고 DB에 데이터를 추가하고 다른 응용 프로그램에서 나는에서 추가 정보를 검색 할 첫 번째 앱.

문제는 두 번째 앱에서 DB를 쿼리 할 때마다 빈 목록이 표시된다는 것입니다. API 키와 함께 Mongo DB의 키를 확인했는데 모든 것이 제 앱에서 괜찮아 보입니다. 두 번째 응용 프로그램이 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(); 

} 

I`ve 거의 3 일이 일에 고전을 면치 못하고으로 도와주세요에서 정보를 검색하기 위해 여기

는 코드입니다. 나는 컬렉션 DB에 정보를 추가 할 때

+0

을? 몇 가지 로그 또는 오류를 제공해야합니다 ... –

+0

내 쿼리 query.whereEqualTo ("score", "none"); 이것은 데이터베이스에있다. 오류가 없으므로 쿼리가 문제가 아닙니다. 나는 항상 빈 목록을 얻는다. 나는 또한 "InjuriesAndSuspensions"에서 모든 대상을 얻으려고했지만 아직 비어 있습니다. – dragosiv

+0

대시 보드를 사용하여 대상 구문 분석 개체의 ACL 표시 값을 확인한 다음 쿼리에 대상 개체의 ACL을 통해 관련 사용자 권한의 마스터 키 또는 유추 된 액세스 권한이 있는지 확인하십시오. –

답변

0

, 나는 돌아가신`t를 사용하던의 parseObject이 라인이 내 응용 프로그램에서 구문 분석을 초기화 된 곳 추가 한 :

defaultACL.setPublicReadAccess (TRUE);

구문 분석 초기화하는 방법에 대한 전체 코드 : 조회를 잘 아무것도 일치 나던 경우 OK입니다 빈 목록을 가지고있는 경우

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

}

관련 문제