我的问题是-使用.include()查询可以检索到多深的数组数据?(适用于parse.com平台上的安卓系统)
背景-我正在努力决定设计我的数据关系的最佳方式。我在我的数据之间有X个级别的关系,例如:祖父母对象包括父对象的数组,子对象包括孙子对象的数组,曾孙对象的数组,或者干脆...
祖辈对象->父对象->子对象->孙对象->曾孙对象。
如果我在祖父对象上执行查询,并希望包括父对象的数组,那么我知道我必须在查询中添加".include(Parent)“。但是,如果我这样做,数组包含的深度会有多深?它还会包括子对象的数组(以此类推)到曾孙对象的数组吗?
我只需要祖级对象及其父对象(而不是所有其他数组子对象)。我不需要所有的子(Ren)数据数组--只需要最直接的子数组。但是,让每个级别都有一个子级数组似乎是有意义的(因为在我的应用程序中,每个数组中的子级数组大约是10到50个)。
.include()只会走一级深还是更深,有没有办法控制深度?
以下是我尝试过的方法:
//create grandchildren
ParseObject pGrandChild1 = new ParseObject("Grandchild");
pGrandChild1.put("name", "Child 1");
pGrandChild1.saveInBackground();
ParseObject pGrandChild2 = new ParseObject("Grandchild");
pGrandChild2.put("name", "Child 2");
pGrandChild2.saveInBackground();
//create children
ParseObject pChild1 = new ParseObject("Child");
pChild1.put("name", "dad");
ArrayList<ParseObject> pGrandchildArray = new ArrayList<ParseObject> ();
pGrandchildArray.add(pGrandChild1);
pGrandchildArray.add(pGrandChild2);
pChild1.put("grandchildren", pGrandchildArray);
pChild1.saveInBackground();使用上面的代码,它只添加要解析的两个孙子节点,而不是子节点(即两个子节点的父节点或父节点)。如果我注释掉与ArrayList代码相关的4行代码,那么它将添加要解析的pChild1 (“pChild1”对象)以及他的两个孩子。显然,这并没有像我想要的那样添加Array关系,但是,我不确定为什么上面的代码没有添加该关系。
我甚至在pGrandChild2.saveInBackground();行之后添加了一个Thread.sleep(5000);,认为在保存对象之间可能需要一点时间。这也于事无补。
发布于 2014-02-17 06:58:26
你也可以做多级包含,使用点符号。如果你想在评论中加入帖子和帖子的作者,你可以这样做:
query.include("post.author");通过多次调用
,您可以发出包含多个字段的查询。此功能也适用于getFirst()和getInBackground()等ParseQuery帮助器。
在本例中,这意味着您可以使用以下命令查询祖父母对象:
query.include("parents.children.grandchildren.greatgrandchildren");只需注意,parents是祖级数组的属性名,children是父级数组的属性,依此类推。
https://stackoverflow.com/questions/21803453
复制相似问题