我需要在Cloud Code中编写后台作业。 它应查询每个用户的“用户”类,获取“商品”列中的技能数组。然后,它应该再次查询“用户”类,以便每个用户将匹配的第一个用户的技能与所有其他用户进行比较。
这是我目前所拥有的......
Parse.Cloud.job("backgroundJob", function(request, status) {
// Set up to modify user data
Parse.Cloud.useMasterKey();
var counter = 0;
// Query for all users
var users_query = new Parse.Query(Parse.User);
users_query.find(function(user) {
for(var i = 0; i < user.length; i++){
var searchSkills = user[i].get("search");
var query = new Parse.Query(Parse.User);
query.containedIn("offer", searchSkills);
var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.matchesQuery('user', query);
}
Parse.Push.send({
where: pushQuery,
data: {
alert: "Found someone close to you!"
}
}, {
success: function() {
// Push was successful
},
error: function(error) {
// Handle error
}
});
status.message(counter + " users processed.");
counter++;
}).then(function() {
// Set the job's success status
status.success("Success");
}, function(error) {
// Set the job's error status
status.error("Error has been encountered");
});
});
我在推送通知中遇到以下错误: 无法对不存在的列“offer”执行操作
显然,它会为我的第二个用户查询创建一个新的空“用户”类。 任何帮助将非常感谢。
答案 0 :(得分:0)
这是containsIn方法的链接:https://parse.com/docs/js/api/classes/Parse.Query.html#methods_containedIn
因此,您需要在用户上添加“offer”列,其中包含可在数组searchSkills中找到的值。听起来你没有“报价”专栏。也许你有“优惠”?这些都区分大小写。
对于第二部分,您的安装中是否有“用户”字段?我相信,这是你必须手动设置的东西。所以听起来你从来没有设置过,它正在为查询创建一个空白的用户字段。
此外,Query.find只能返回1000个结果。如果您想要浏览所有用户,则必须使用Query.each。