Parse.User查询在云代码

时间:2015-07-09 17:45:42

标签: parse-platform

我正在使用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应用程序中所有用户的更新,我很乐意听到它!

1 个答案:

答案 0 :(得分:3)

  1. 该参考实际上说:
  2.   

    查询可能没有任何排序顺序,可能不会使用限制或跳过。

    https://parse.com/docs/js/api/symbols/Parse.Query.html#each

    所以忘记“query.limit(10)”,这与此无关。

    1. 无论如何,通过他们的后台工作示例,您可能忘记将“返回”放入“每个”功能中。另外,你在异步任务中调用了chars=`echo -n $num | wc -c` if [ $chars -gt $x ]; then .... fi ,这就是为什么你得到0结果的意义。也许你试试:

      console.log('Found '+counter+' users.');
    2. 您可以再次检查Parse编写此云作业的示例。

      https://parse.com/docs/js/guide#cloud-code-advanced-writing-a-background-job