Parse platform 在.save()中完成对象解析SWIFT响应

Parse platform 在.save()中完成对象解析SWIFT响应,parse-platform,Parse Platform,在ParseSwift SDK中调用save时,是否有方法控制在解析服务器响应中返回哪些字段(或返回完整的对象状态) 当我使用以下功能时: var prsUser = PrsUser() prsUser.setData(from: user, syncData: syncData) print("prsUser before save: \(prsUser)") prsUser.save { result in switch result { case .su

在ParseSwift SDK中调用save时,是否有方法控制在解析服务器响应中返回哪些字段(或返回完整的对象状态)

当我使用以下功能时:

var prsUser = PrsUser()
prsUser.setData(from: user, syncData: syncData)
print("prsUser before save: \(prsUser)")
prsUser.save { result in
    switch result {
    case .success(let user):
         print("prsUser saved: \(String(describing: user))")
         success(true)
    case .failure(let error):
         print("Error saving: \(error)")
         success(false)
    }
}
我可以在控制台中看到保存前的print语句以及作为保存的响应:

保存前的用户:\u用户 ({“createdAt”:{“uuuu类型”:“日期”,“iso”:“2021-05-07T17:54:59.267Z”},“maxD”:61,“objectId”:“cladv25wz”})

prsUser已保存:\u用户 ({“objectId”:“cladv25wz”,“updatedAt”:{“日期”,“iso”:“2021-05-08T13:57:35.950Z”},“maxD”:61,“createdAt”:{“日期”,“iso”:“2021-05-07T17:54:59.267Z”})

但在这个简单的例子中,我有两个小问题:

  • 在云代码中,我尝试还原某些字段的值,在本例中,maxD在beforeSave触发器中被还原,因为我还可以在Parse仪表板中确认它没有更改

    request.object.set(“maxD”,request.original.get(“maxD”)

  • prsUser对象中还有其他字段没有修改,但我希望它们会显示在响应中。在Parse Dashboard控制台中,我可以在以下日志中看到:

  • 输入: {“电子邮件”:aa@aa.aa,“用户名”:aa@aa.aa“,”emailVerified“:false,”createdAt“:”2021-05-07T17:54:59.267Z“,”updatedAt“:”2021-05-08T13:57:35.950Z“,”gch“:”1,“minA”:25,“sof”:true,“maxD”:87,“maxA”:36,“updates:”{“gch:”2021-05-7T12:00:00.000Z“,”maxA:”2021-05-7T12:00:00.000Z“,”ACL“,”ACL“,”cladf:”read“,”true“,”write“,”,“objectId”:“cLAdfV25wz”}

    结果:{“对象”:{“maxD”:87}

    当我使用以下代码记录还原前后的更多信息时,我可以清楚地看到唯一的dirtyKey是maxD,并且它正在从请求的值还原回原始值(在本例中为87):

    但是,我又一次感到困惑,为什么我会收到上面保存值为61的响应

    因此,我的问题是:

  • 有没有办法通过响应中的所有字段获取实际对象状态?似乎解析服务器在更新和保存值之前确实从数据库中读取了对象,因此理论上可以发回整个对象
  • 还是我理解错了,解析服务器返回的值没有超过“success”标记?在这种情况下,没有额外的fetch调用就无法判断实际保存了哪些值

  • 如果您只需要更新“maxD“属性值,您可以查看rest指南,然后评估是否使用rest.PUT作为upd的OP,只需一个或两个属性:这一个字段只是一个示例。实际上,可能有1…n个字段正在更新。它实际上正确地保存,只是响应没有得到当前保存的状态,也没有显示所有字段,只有脏字段在更新后按照解析文档获取obj:注意文档中该部分的“刷新”
    const dirtyKeys = request.object.dirtyKeys();
    request.log.info(`request.object before revert ${JSON.stringify(request.object)}, dirtyKeys: ${dirtyKeys}`);
    request.object.set("maxD", request.original.get("maxD"));
    request.log.info(`request.object after revert ${JSON.stringify(request.object)}`);