【问题标题】:Fetch ParseObject data based on relations query基于关系查询获取 ParseObject 数据
【发布时间】:2015-10-16 09:30:43
【问题描述】:

我对创建查询以获取预期数据的方式有疑问。

我有 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"));

进入工作约束。

有什么建议吗?

【问题讨论】:

  • 查看我编辑的答案!

标签: android parse-platform


【解决方案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());
          }
      }
    });

【讨论】:

  • 不幸的是它不起作用。在结果列表中我没有任何项目。我不确定这个约束“MyObject.ColumnPtr”在 Parse 中是否有效。我将它包含在我的主要查询中,作为我想要获得的示例。
猜你喜欢
  • 2010-11-27
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多