Parse.com 从客户端批量保存 (saveAll) 超时

Posted

技术标签:

【中文标题】Parse.com 从客户端批量保存 (saveAll) 超时【英文标题】:Parse.com batch save from client (saveAll) timing out 【发布时间】:2014-10-20 06:28:31 【问题描述】:

我有一堆 Parse 对象(可以高达 200 个)需要使用设置为通用(短)字符串值的通用字段进行更新。我尝试使用一个循环并在每个循环上保存,但随后它使我的 API 使用量超出了您可以想象的限制,当有数百个循环时。

所以,我研究了如何使用 saveAll 从 javascript 客户端执行批处理。我让代码本身工作正常,它正在尝试按预期更新所有文件。现在,这个问题似乎是它在单个批次 POST 中执行一批 PUT 到https://api.parse.com/1/batch,虽然它把它当作来自客户端的单个 HTTP 操作,但 parse.com 服务器把它当作一个单个操作的超时限制。

如果批处理中有超过 5 个文件,它将超时(给出错误 124),因为由于某种原因,根据 chrome 的网络浏览器,批处理中的每个单独保存似乎需要约 3 秒。单次存档怎么会花这么长时间?

此外,这引出了一个问题,即为什么它会超时,因为每次保存都应该是一个单独的 API 调用(如批处理操作内部的请求所示)。由于我是从客户端运行此批量保存,所以不应该像云代码那样没有超时限制(那里是 15 秒)吗?

有人可以帮我理解这个吗?这是一个巨大的瓶颈,我想不出任何其他解决方法。似乎保存一批 5+ 个对象(只有一个脏的字符串字段)不应该那么费力!

【问题讨论】:

【参考方案1】:

由于所有对象都使用相同的字符串更新到相同的字段,您是否考虑过使用集合?正如文档所说,您可以使用模型类或特定的 Parse.Query 创建一个新的子类。要更新的代码很简单:

collection.reset([
  "name": "Hawk",
  "name": "Jane"
]);

https://parse.com/docs/js_guide#collections

【讨论】:

我对此进行了调查,似乎无法通过使用重置对象将集合中的对象作为批处理保存到后端。这显然只修改了客户端的集合。看看这个:parse.com/questions/….

以上是关于Parse.com 从客户端批量保存 (saveAll) 超时的主要内容,如果未能解决你的问题,请参考以下文章

如何批量更新用户类(Parse.com、Android)中的所有对象?

从 Parse.com 播放音频

Parse.com 保存图像示例。只检索一张图像

Saveas 后删除单元格内容

如何从 UIImageView 将图像上传到 Parse.com [关闭]

从CMD运行并且遇到使用SaveAs的问题