我有一个我发送给服务器的Offer对象,当即将创建此提议时,我需要向用户发送推送通知.Offer有一个指向User的指针,该字段被称为"to".
如何从指针中获取对象?
Parse.Cloud.beforeSave("Request", function(request, response) {
var userQuery = new Parse.Query("User")
userQuery.get(request.object.get("to").id, {
success: function (user) {
console.log("user: ", user);
var installationQuery = new Parse.Query("Installation");
installationQuery.equalTo("user", user);
Parse.Push.send({
where : installationQuery,
data : {
alert : "HEllo"
},
success : function() {
},
error : function() {
console.log("error finding installation: " + error);
}
});
},
error : function (error) {
console.log("ERRRRRRRRRR");
}
});
response.success();
});
Run Code Online (Sandbox Code Playgroud)
要直接回答您的问题,您可以使用Parse.Query.get()或Parse.Object.fetch()来检索对象.
我假设你看到的问题是对象保存但推送通知没有发生.原因是您在调用response.success()并返回之前没有等待get()完成.
这里有几种方法可以调和:
你的现有代码,但response.success()向上移动:Parse.Cloud.beforeSave("Request",function(request,response){
var userQuery = new Parse.Query("User")
userQuery.get(request.object.get("to").id, {
success: function (user) {
console.log("user: ", user);
var installationQuery = new Parse.Query("Installation");
installationQuery.equalTo("user", user);
Parse.Push.send({
where : installationQuery,
data : {
alert : "HEllo"
},
success : function() {
response.success();
},
error : function() {
console.log("error finding installation: " + error);
}
});
},
error : function (error) {
console.log("ERRRRRRRRRR");
}
});
});
Run Code Online (Sandbox Code Playgroud)
简化与承诺
Parse.Cloud.beforeSave("Request", function(request, response) {
request.object.get("to").fetch().then(function(user) {
var installationQuery = new Parse.Query("Installation");
installationQuery.equalTo("user", user);
return Parse.Push.send({
where : installationQuery,
data : {
alert : "HEllo"
}
});
}).then(function() {
response.success();
}, response.error);
});
Run Code Online (Sandbox Code Playgroud)
进一步简化.如果您没有在用户中使用数据,则不需要仅仅为了传递指向查询的指针而获取它.
Parse.Cloud.beforeSave("Request", function(request, response) {
var installationQuery = new Parse.Query("Installation");
installationQuery.equalTo("user", request.object.get("to"));
return Parse.Push.send({
where : installationQuery,
data : {
alert : "HEllo"
}
}).then(function() {
response.success();
}, response.error);
});
Run Code Online (Sandbox Code Playgroud)