2015-11-04 29 views
0

所以,我有2类:的Android解析查询2类

Request class 
| objectId | user | data | status | 

User class 
| objectId | fullName | 
Request

'用户' 密钥是Relation<_User>类型,是一个指针,指向用户类。
我想获得所有的请求,其中statusnew,我也想获得用户的fullName

我想要得到的数据应该是这样的。

| objectId | user | data | status | fullName | 

这是我基于Parse.com Android Guide

ParseQuery<ParseObject> query = ParseQuery.getQuery("Request"); 
query.include("user"); 
query.whereEqualTo("status", "new"); 

这已经尝试将请求返回null,但是当我删除include方法,它显示的值,但没有fullName

任何人都可以帮忙吗?如果我的解释不清楚或需要更多信息,请发表评论。谢谢:)

编辑
这就是我如何在请求中插入新行。

ParseObject post = new ParseObject("Request"); 
post.put("data", "data"); 
post.put("status", "new"); 
ParseUser user = ParseUser.getCurrentUser(); 
ParseRelation<ParseUser> relationRequest = post.getRelation("user"); 
relationRequest.add(user); 
+0

您没有任何外键可以在两个类中的数据之间建立链接。使用外键概念 –

+0

@ Kat-hat我想我已经正确添加了这个关系,请看看我编辑过的帖子。我也可以在浏览器中的Parse Data中点击'View Relations'并查看用户数据。 :) – Wilik

+0

您是否使用请求类“user”指向User类objectId?“user”是否包含字符串类型的objectId? –

回答

1

一种简单方式是在Request类创建user1柱含有User类的objectId

为了创建user1列中使用

ParseUser currentUser=ParseUser.getCurrentUser(); 
ParseObject post = new ParseObject("Request"); 
post.put("data", "data"); 
post.put("status", "new"); 
post.put("user1", currentUser); 
post.saveInBackground(); 

然后使用以下代码来从User类取全名

ParseQuery<ParseObject> getQuery = ParseQuery.getQuery("Request"); 
     getQuery.include("user1"); 
     getQuery.findInBackground(new FindCallback<ParseObject>() { 
      public void done(List<ParseObject> scoreList, ParseException e) { 
       if (e == null) { 
        if (scoreList != null && scoreList.size() > 0) { 
         ParseObject putData = scoreList.get(0); 
         String user1=putData.getParseObject("user1").getString("fullName"); 
         String user2=putData.getString("user2"); 
         Log.e("USer 1", ""+user1); 
         Log.e("USer 2", ""+user2); 
        } 
       } 

      } 
     }); 

这是为我工作。也可以帮助你。