我正在使用Parse进行项目,我需要为每个用户计算一些信息,并在更新帐户时进行更新。我创建了一个Cloud Code触发器,可以在用户帐户更新时执行我需要的操作,并且运行良好。但是,我已经创建了大约两千个我需要更新的帐户。经过几个小时的尝试让Cloud Job工作,我决定尝试简化它。我编写了以下工作来简单地计算用户帐户。重申一下;我实际上并没有尝试计算用户,有更有效的方法可以做到这一点,我试图验证我可以查询和循环现有的用户帐户。 (useMasterKey的选项就在那里,因为我稍后会需要它。)
Parse.Cloud.job("getUserStatistics", function(request, status) {
// Set up to modify user data
Parse.Cloud.useMasterKey();
// Query for all users
var query = new Parse.Query(Parse.User);
var counter = 0;
query.each(function(user) {
counter = counter+1;
}).then(function() {
// Set the job's success status
status.success("Counted all User Accounts.");
}, function(error) {
// Set the job's error status
status.error("Failed to Count User Accounts.");
});
console.log('Found '+counter+' users.');
});
当我运行代码时,我得到:
I2015-07-09T17:29:10.880Z]Found 0 users.
I2015-07-09T17:29:12.863Z]v99: Ran job getUserStatistics with:
Input: "{}"
Result: Counted all User Accounts.
如果我补充一点,对我来说更加困惑:
query.limit(10);
...查询本身实际上失败了! (我希望它能算上10个用户。)
也就是说,如果有更简单的方法来触发Parse应用程序中所有用户的更新,我很乐意听到它!
答案 0 :(得分:3)
查询可能没有任何排序顺序,可能不会使用限制或跳过。
https://parse.com/docs/js/api/symbols/Parse.Query.html#each
所以忘记“query.limit(10)”,这与此无关。
无论如何,通过他们的后台工作示例,您可能忘记将“返回”放入“每个”功能中。另外,你在异步任务中调用了chars=`echo -n $num | wc -c`
if [ $chars -gt $x ]; then
....
fi
,这就是为什么你得到0结果的意义。也许你试试:
console.log('Found '+counter+' users.');
您可以再次检查Parse编写此云作业的示例。
https://parse.com/docs/js/guide#cloud-code-advanced-writing-a-background-job