我对如何创建查询以获取预期数据的方式提出质疑。
我有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"));
进入工作约束。
有什么建议吗?
答案 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());
}
}
});