基于关系查询获取ParseObject数据

时间:2015-10-16 09:30:43

标签: android parse-platform

我对如何创建查询以获取预期数据的方式提出质疑。

我有MyObject(ParseObject),它有指向ParseUser的指针(名为createdByPtr的列)。在ParseUser中,我有自定义列userGroupPtr。

现在我想让所有用户创建的所有MyObject行(createdByPtr)都属于当前登录用户(ParseUser.CurrentUser())所属的用户组(userGroupPtr)。 此刻我有这样的草案:

ParseQuery<MyObject> query = ParseQuery.getQuery(MyObject.class);
        query.include("createdByPtr");
        query.whereEqualTo("createdByPtr.userGroupPtr", ParseUser.getCurrentUser().get("userGroupPtr"));
        query.orderByDescending("updatedAt");
        query.findInBackground(new FindCallback<MyObject>() {
            @Override
            public void done(List<MyObject> results, ParseException e) {
                ....
            }
        });

我不知道应该如何改变行:

query.whereEqualTo("createdByPtr.userGroupPtr", ParseUser.getCurrentUser().get("userGroupPtr"));

进入工作约束。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

试试这样。我已经测试过它完美无缺。见Relational Queries

 ParseQuery<ParseUser> innerQuery = ParseUser.getQuery();
    innerQuery.whereEqualTo("userGroupPtr","userGroupPtr"); //value of userGroupPtr
    ParseQuery<ParseObject> query = ParseQuery.getQuery(MyObject.class);
    query.whereMatchesQuery("createdByPtr", innerQuery);
    query.findInBackground(new FindCallback<ParseObject>() {
      public void done(List<ParseObject> objectList, ParseException e) {

          if(e == null){

          }else{
              Log.e("Object", e.getMessage());
          }
      }
    });