我想知道Parse Query上的每个命令如何计入请求执行限制。我正在构建一个需要在解析类中对许多对象(可能超过1000个)执行函数的应用程序。
例如(在JavaScript中),
var query = new Parse.Query(Parse.User);
query.equalTo('anObjectIWant',true); //there could be more than 1000 objects I want
query.each(function(object){
doSomething(object); //doSomething does NOT involve another Parse request
});
那么,上面的代码是否会计入我的Parse应用程序执行限制的1个请求(你得到30 /秒免费),或者每个对象(每次调用"每个")都会使用一个请求(所以1000个对象将是1000个请求)?
答案 0 :(得分:4)
我通过观察query.each()
针对不同结果集大小发出的API请求数来评估资源使用情况。底线是(在撰写本文时)此函数使用默认查询结果计数限制为100.因此,如果您的查询最多匹配100个结果,它将生成1个API请求,2个API请求为101-200,因此向前。
使用query.limit(1000)
手动将限制增加到最大值无法更改此行为。如果这样做,您在之后调用query.each()
时会出现错误(文档中也提到了这一点)。
因此必须考虑手动实现此功能(例如,通过递归query.find()
),它允许您将查询限制设置为1000,因此,在最好的情况下,只消耗十分之一的API请求query.each()
将消耗。
答案 1 :(得分:0)
如果.each方法每次迭代都会查询服务器,我不会感到惊讶。 您可以使用他们的“控制面板”来检查这一点,只需查看已提出的请求数量。
我们在做了一些原型设计之后离开了Parse,其中一个原因是当我使用解析网站上的正确和消耗的代码时,我设法每天创建6500个请求,这是使用该应用程序的唯一一个。 使用我们自己的API,我们不会超过100。
答案 2 :(得分:0)
根据以下情况计算为1或2: 如果从cloudcode function = 2运行,则1表示云代码调用+ 1表示查询。由于查询一次性获得结果,因此只需一次调用。
如果这应该放在" beforeSave"函数或类似函数,然后只计算查询,1 API调用。
所以只要你不为每个结果触发另一个解析API,你就应该很好。