Parse Server-如何在单个查询中用另一个表中的字段查找和替换查询的字段

问题描述 投票:0回答:1

我在解析服务器上找不到以下问题的解决方案。它等效于在SQL中使用JOIN,但是因为Parse Server使用NoSQL,所以解决方案不是联接。

问题;报告屏幕显示查询结果。但是需要从另一个类中查找一个字段,并替换为另一个类中的字段。

我只能通过使用两个单独的嵌套查询来解决此问题,但这是有效的方式。您能告诉我如何在单个查询中或更有效地执行以下操作吗?

 //get query result from database
        ParseQuery<ParseObject> query = ParseQuery.getQuery("access");
        query.whereStartsWith("tokenid", "prefix");
        query.findInBackground(new FindCallback<ParseObject>() {
            @Override
            public void done(List<ParseObject> objects, ParseException e) {
               for (int i=0; i<objects.size(); i++) {
                   String reportField1 = objects.get(i).getString("name");
                   String lookup = objects.get(i).getString("cityID");

                   //start the second query
                   ParseQuery<ParseObject> query2 = ParseQuery.getQuery("cities");
                   query2.whereEqualTo("cityID", lookup);
                   query2.getFirstInBackground(new GetCallback<ParseObject>() {
                       @Override
                       public void done(ParseObject object, ParseException e) {
                           String reportField2 = object.getString("cityname");
                       }
                   });
               }
            }
        });
join parse-platform nosql
1个回答
0
投票

您要查找的在Parse中称为pointer。代替将cityID存储在access对象上,而存储指向cities对象的指针并将其包含在查询中。

这里是Android guide的示例

ParseQuery<ParseObject> query = ParseQuery.getQuery("Comment");

// Retrieve the most recent ones
query.orderByDescending("createdAt");

// Only retrieve the last ten
query.setLimit(10);

// Include the post data with each comment
query.include("post");

query.findInBackground(new FindCallback<ParseObject>() {
  public void done(List<ParseObject> commentList, ParseException e) {
    // commentList now contains the last ten comments, and the "post"
    // field has been populated. For example:
    for (ParseObject comment : commentList) {
      // This does not require a network access.
      ParseObject post = comment.getParseObject("post");
      Log.d("post", "retrieved a related post");
    }
  }
});

通过将指针存储在access对象上,只需将其包含在查询中就可以获取相应的cities对象。

© www.soinside.com 2019 - 2024. All rights reserved.