Parse platform 键没有来自PFUser子类和引用指针字段的数据

Parse platform 键没有来自PFUser子类和引用指针字段的数据,parse-platform,parse-server,Parse Platform,Parse Server,我需要在每次应用程序启动时更新当前用户并重新蚀刻,这样我就可以掌握用户对象的最新版本,而不是使用磁盘上缓存的版本 User.current()?.fetchInBackground(block: { (user, error) in //simply using a fetchInBackground won't fetch the entire reference field store in // the user collection. In the case

我需要在每次应用程序启动时更新当前用户并重新蚀刻,这样我就可以掌握用户对象的最新版本,而不是使用磁盘上缓存的版本

User.current()?.fetchInBackground(block: { (user, error) in
       //simply using a  fetchInBackground won't fetch the entire reference field store in 
      // the user collection. In the case of using PFQuery, we could simply include the key for  
      // reference field.
})

我是否必须对所有这些引用字段进行额外的获取,然后相应地更新当前用户的字段

Fetch仅返回存储在数据库中的数据。对于指针,这只是一个基本的JSON对象,指定它是指针、类名和该对象的objectId。为了返回此数据,您需要使用解析查询并包含所需的字段。Include与点表示法配合使用,因此您可以执行类似于
objectAQuery.Include(“objectB.objectC”)
的操作,这将包括作为objectB上的指针存储的objectC的所有数据。如果我没有弄错的话,这将不包括objectB的所有数据,尽管我不能肯定地说


最后,使用
query.get()
获取具有特定objectId的对象。但是,如果对象不存在,这将抛出一个错误,因此请确保适当地处理该错误。您也可以在objectId上使用query equalTo,然后调用
query.first()
,但更推荐使用
get

注意-我的示例使用的是JS,而不是Swift,因此函数名可能不同,但两个SDK中肯定存在等价项。我知道我可以使用query来获取相应的数据,但我可以一次性完成吗?问题是PFUser被缓存并存储在磁盘中,每次启动应用程序时,我都希望从远程数据库更新当前用户,而不是使用缓存中的用户。通常,我们使用FetchIfNeeded将接收器更新为新值,但不确定在对象具有指针字段的情况下如何执行FetchIfNeeded不会执行您认为它正在执行的操作。FetchIfRequired将只在以下情况下进行获取:比方说,您对具有指向objectB的指针的objectA调用了FetchIfRequired,而对objectB调用了FetchIfRequired。或者,如果您创建了一个新的PFObject,并手动设置了它的ID,则需要调用fetchIfNeeded。如果需要,Fetch将永远不会获取以前获取的对象。一旦获取对象,确定是否需要获取fetchIfNeeded的布尔值就会被翻转。只要有新信息,它就不会获取。是的,假设objectA有指向objectB和objectC的指针,objectB有指向objectD的指针。您可以执行类似于
objectAQuery.include(“objectB”).include(“objectC”).include(“objectB.objectD”)
,然后
objectAQuery.get(objectId,{useMasterKey:true})
基本上您将获取id为objectId的objectA对象及其所有数据,以及它指向数据的对象。