【发布时间】:2014-12-11 23:28:05
【问题描述】:
据我从 Parse 文档和 Stack Overflow 得知,PFObject.saveAllInBackground 只需要 1 个 API 请求即可保存所有对象。
我的方法保存一个对象,然后返回并saveAlls 2 个对象。这似乎只需要 2 个 API 请求,但是 Parse Analytics 告诉我它需要 3 个。
有什么猜测吗?
这是代码:
// Create new Vote object
var voteObject = PFObject(className: "Votes")
[.....]
voteObject.saveInBackgroundWithBlock {
(succeeded: Bool!, error: NSError!) -> Void in
if (succeeded == true){
// Add relation for postObject
self.postObject.relationForKey("UserVotes").addObject(voteObject)
// Add relation for user object
PFUser.currentUser().relationForKey("userVotes").addObject(voteObject)
PFObject.saveAllInBackground([self.postObject, PFUser.currentUser()], block: {
(succeeded: Bool!, error: NSError!) -> Void in
[.....]
})
【问题讨论】:
-
您的
voteObject也会被保存。你确定计数不包括那个吗? -
@rickerbh 相信它包括了这一点。从逻辑上讲,这不是为voteObject保存一次,为saveAll中的两个对象保存一次吗?
-
是的,你是对的——我真傻。我只是尝试了同样的事情。创建 5 个 PFObject,用 saveAllInBackground 保存它们并观察网络流量。肯定只发出 1 个网络请求。但是,我的分析 API 命中增加了 5。我想从客户端的角度来看,它更快/更可靠,因为必须执行单个请求,但看起来您实际上并没有保存 API 命中。什么骗局!
-
如果您在 REST 操作 API 文档的末尾看到他们的 batch command(这是我假设
saveAll在后台实现的方式),它会声明“注意批量发送的 N 个请求仍将作为 N 个请求计入您的请求限制。" -
@rickerbh 很奇怪。我很好奇(如果你说的是真的)为什么大多数人都说它只需要一个请求。 saveAll 方法(理论上)可能有一些特殊的标签,不同于告诉 Parse 只将其计为一个请求的批处理吗?要是我们有赫克托·拉莫斯来拯救这一天就好了……
标签: ios swift parse-platform