Cloud Code,复杂查询,在响应之前添加键值对

时间:2015-09-05 17:03:12

标签: parse-platform cloud-code

我想使用Cloud Code获取一批User对象。在收集对象发送给客户之前,他们必须采用唯一的号码。 现在它看起来像这样

angular.module('moduleName').controller('controllerName', function(test) {
  $scope.test = test.array;

  console.log("test: ", $scope.test);
});

我如何在客户端使用它......

Parse.Cloud.define("getUsers", function(request, response)
{
    var query = new Parse.Query(Parse.User);

    var mode = parseInt(request.params.mode);
    var username = request.params.username;
    var skip = parseInt(request.params.skip);
    var limit = parseInt(request.params.limit);

    if(mode==1)
    {
        query.notEqualTo("fbLogged",true)
        .descending("score")
        .notEqualTo("username",username)
        .skip(skip)
        .limit(limit);

        query.find({
            success: function(objects)
            {
                var i = 0;
                objects.forEach(function(item)
                {
                    item["rank"]=skip+i; //setting a unique number (position based on score)
                });

                response.success(objects);
            },
            error: function(error)
            {
                response.error(error);
            }
        });
    }
});

如您所见,我只显示收到的对象。 它给了我这些数据。 enter image description here

但“等级”字段在哪里?

1 个答案:

答案 0 :(得分:0)

我刚刚找到解决方案。将通过response.success()发送给客户端的每个ParseObject必须在发送之前保存在Parse上。 现在我的代码看起来像这样,它可以正常工作

Parse.Cloud.define("getUsers", function(request, response)
{
    var query = new Parse.Query(Parse.User);

    var mode = parseInt(request.params.mode);
    var username = request.params.username;
    var skip = parseInt(request.params.skip);
    var limit = parseInt(request.params.limit);

    if(mode==1)
    {
        query.notEqualTo("fbLogged",true)
        .descending("score")
        .notEqualTo("username",username)
        .skip(skip)
        .limit(limit);

        query.find({
            success: function(objects)
            {
                for(var i = 0; i<objects.length; i++)
                {
                    objects[i].set("rank", skip+i);
                    objects[i].save();
                }

                response.success(objects);
            },
            error: function(error)
            {
                response.error(error);
            }
        });
    }
});