Ios 云函数根据平台返回不同的结果

Ios 云函数根据平台返回不同的结果,ios,parse-platform,parse-cloud-code,Ios,Parse Platform,Parse Cloud Code,我有一个Parse Cloud代码函数,它是一个简单的查询,用于请求根对象并获取其子对象及其子对象(对象层次结构的3层) 我这样做是因为集合可能已经在设备上,我无法找到可靠的方法来确保我拥有最新的副本fetchInBackground…可能会起作用,但您不能执行我需要执行的include来获取孩子/孙子。(我不明白为什么Parse没有添加此功能。我无法告诉您我有多少次想说“更新此对象,包括这些子对象”!) 无论如何,云代码功能正在运行,但会产生奇怪的结果: 当我从RESTAPI控制台运行查询时,

我有一个Parse Cloud代码函数,它是一个简单的查询,用于请求根对象并获取其子对象及其子对象(对象层次结构的3层)

我这样做是因为
集合
可能已经在设备上,我无法找到可靠的方法来确保我拥有最新的副本
fetchInBackground…
可能会起作用,但您不能执行我需要执行的
include
来获取孩子/孙子。(我不明白为什么Parse没有添加此功能。我无法告诉您我有多少次想说“更新此对象,包括这些子对象”!)

无论如何,云代码功能正在运行,但会产生奇怪的结果:

  • 当我从RESTAPI控制台运行查询时,我得到了预期的所有数据。具体地说,我得到了1个
    集合
    、3个
    对象(属于该集合)以及属于每个
    对象。具体而言,
    集合
    的第三个
    包含67个
    对象
  • 当我从iOS设备(或模拟器)运行查询时,第三个
    始终返回51个
    对象。有趣的是,在服务器上更新数据模型之前,这是正确的
  • 因此,尽管我尽了最大努力,我似乎无法更新固定在设备上的数据模型,以反映服务器上所做的更改。让我真正困惑的是,尽管调用了云代码函数,但仍然返回了设备上的数据模型

    我假设当对象从函数返回时,它会看到对象已经被固定,并且没有包含来自服务器的新数据。我搞不懂的是怎么避开这件事。我希望数据固定,因为我不想管理自己的本地数据存储(尽管我想如果必要的话我会这样做)。在调用Cloud code函数之前,我尝试过取消绑定
    Set
    对象,但这不会改变结果,即使我同步运行
    unpin
    调用

    我刚刚花了几个小时尝试执行自己的刷新序列,如下所示:

  • 刷新
    集合
  • 迭代
    集合
    对象,刷新它们
  • 迭代每个
    组的
    对象,刷新它们
  • 虽然这在流程执行时似乎效果很好,但一旦我到达流程的末尾,第二级和第三级数据就不会被保留


    我觉得这应该是一个微不足道的实现。很多人都要求这个功能。是否有人已经基本了解了如何执行“包含的获取”

    如果您拥有要更新的
    集合的
    对象ID
    ,您可以在
    集合
    类上创建查询并约束
    对象ID
    。然后可以使用
    includeKey:
    方法获取相关数据,然后获取数据


    另一种选择是首先获取集合对象,然后获取其子对象。但是,这需要多个嵌套网络请求。

    这正是我在问题中描述的。当我这样做时,我返回的对象似乎被丢弃,取而代之的是本地数据存储中已经存在的项。您尝试过对象ID查询吗?我也会尝试重新安装应用程序(在手机上删除),看看你的LDS中是否有坏数据。是的。似乎没有任何方法可以忽略本地数据存储中已有的结果。我不能简单地做一个fetchInBackground,因为这不允许我得到child,尤其是grandchild对象。
    Set
    |--> Group
         |--> Item