【问题标题】:Saving multiple objects in Parse taking more than 1 API request?在 Parse 中保存多个对象需要超过 1 个 API 请求?
【发布时间】: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


【解决方案1】:

saveAll 方法不再算作 1 次 API 调用。它现在算作每个被保存对象的 1 次 API 调用。更多信息请看这里:stackoverflow.com/q/25690439/3344977

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-24
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2019-05-28
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多