解析Backgroundjob匹配

时间:2015-11-11 17:53:16

标签: javascript parse-platform cloud-code

我目前正在为我的Parse数据库编写后台作业。 数据库包含User类中的许多用户。所有用户都有一个位置'专栏和'提供'并且'搜索'柱。 '报价'并且'搜索'存储一个字符串数组。 它应该做的是以下内容: 后台作业应该遍历所有用户并检查与他们关系密切的用户,然后检查这些用户是否与特定技能相匹配。所以,如果有人有"例如"在'搜索'而其他人有"例子"在'提供'这些用户匹配并且都收到通知。

  1. 位置查询不会选择彼此靠近的用户
  2. 如果用户没有"提供"什么,但"搜索"对于他没有得到通知的事情
  3. 当两个用户彼此靠近(仅一次)时,它不应该不断发送推送通知
  4. -

    Parse.Cloud.job("backgroundJob", function(request, status) {
    var queryAllUser = new Parse.Query(Parse.User);
    Parse.Cloud.useMasterKey();
    var targetList = []; //new Array();
    queryAllUser.each(function(user) {
        var queryMatch = new Parse.Query(Parse.User);
        queryMatch.withinKilometers("location", user.get("location"), 0.1);
    
        //if(user.get("search") != null){
        queryMatch.containedIn("offer", user.get("search"));
        //                                  }
        return queryMatch.first().then(function(firstUser) {
            if (firstUser != null) {
                console.error("THIS IS THE FIRST USER: " + firstUser.get("name"));
            }
            if (firstUser) {
                targetList.push(user);
            }
        });
    }).then(function() {
    
            console.error("Length of TargetList: " + targetList.length);
    
            if (targetList[0] != null && targetList.length != 1) {
    
                var queryTarget = new Parse.Query(Parse.Installation);
                queryTarget.containedIn('user', targetList);
                return Parse.Push.send({
                    where: queryTarget,
                    data: {
                        alert: "Found a Match!",
                        badge: "Increment",
                        pushType: "1",
                    }
                }, {
                    success: function() {
                        status.success("Send the Pushes!");
                    },
                    error: function(error) {
                        status.error(error);
                    }
                });
            }
            status.success("did the job!");
        },
        function(error) {
            status.error("error:" + error.message);
        });
    });
    

0 个答案:

没有答案