我有一个我发送给服务器的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();
});
答案 0 :(得分:5)
要直接回答您的问题,您可以使用Parse.Query.get()或Parse.Object.fetch()来检索对象。
我假设你看到的问题是对象保存但推送通知没有发生。原因是你在调用response.success()并返回之前没有等待get()完成。
以下几种方法可以协调:
您的现有代码,但response.success()已向上移动: Parse.Cloud.beforeSave(“请求”,函数(请求,响应){
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");
}
});
});
简化为Promises
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);
});
进一步简化。如果您没有在用户中使用数据,则不需要仅仅为了传递指向查询的指针而获取它。
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);
});