我有一个Parse Cloud Code函数,它是一个简单的查询,用于询问根对象并获取其子对象及其子对象(3层对象层次结构)。
Set
|--> Group
|--> Item
我这样做是因为Set
可能已经在设备上,我找不到可靠的方法来确保我有最新的副本。 fetchInBackground...
可能会有效,除非您无法执行我需要做的include
以获得子女/孙子女。 (我无法弄清楚为什么Parse没有添加这个功能。我不能告诉你有多少次我想说“更新这个对象,包括这些子对象”!)
无论如何,Cloud Code功能正在运行,但会产生奇怪的结果:
Set
,属于该集合的3 Group
个对象,以及属于每个Item
的{{1}}个对象。具体而言,Group
的第3 Group
个包含67个Set
个对象。Item
始终返回51个Group
个对象。有趣的是,在服务器上更新数据模型之前, WAS 为真。因此,尽管我付出了最大的努力,但我似乎无法更新已固定在我的设备上的数据模型,以反映在服务器上所做的更改。让我真的困惑的是,尽管调用了Cloud Code功能,但仍会返回设备上的数据模型。
我假设当从函数返回对象时,它会看到该对象已被固定,并且未包含来自服务器的新数据。我无法弄清楚的是如何解决这个问题。我希望数据固定,因为我不想管理我自己的本地数据存储(虽然我想我会在必要时)。我在调用Cloud Code函数之前尝试取消固定Item
对象,但即使我同步运行Set
调用,也不会改变结果。
我花了几个小时尝试自己刷新序列,如下所示:
unpin
Set
的{{1}}个对象,刷新它们Group
的{{1}}个对象,刷新它们虽然这似乎在流程执行时运行良好,但是一旦我到达流程结束,第二级和第三级数据就不会被保留。
我觉得这应该是一个微不足道的实现。很多人都要求这个功能。有没有人基本弄明白,如何执行“带包含的提取”?
答案 0 :(得分:0)
如果您要更新object ID
set
,则可以在set
类上创建查询并约束object ID
。然后,您可以使用includeKey:
方法获取相关数据,然后获取数据。
另一种选择是首先获取set对象,然后获取其子对象。但这需要多个嵌套网络请求。