我正在尝试使用云代码向目标渠道发送推送通知。对象称为祷告。当有人保存Prayers时,如果Prayers中的新数据不是匿名的,那么它应该向某些频道发送推送通知。祈祷有一个关键的“匿名者”和#39;在它布尔。所以,我设置了这样的云代码,如果布尔值为false,它会发送它,但是如果它是真的,它就不会发送推送。现在的问题是它有时会在非匿名帖子上发送Push两次。
Parse.Cloud.afterSave("Prayers", function(request) {
var firstName = request.object.get('FirstName');
var lastName = request.object.get('LastName');
var userId = request.object.get('UserId');
var anonymous = request.object.get('Anonymous');
var anonymousString = anonymous.toString
var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.equalTo('channels', userId);
if (anonymous == false) {
Parse.Push.send({
where: pushQuery, // Set our Installation query
data: {
alert: firstName + " " + lastName + " " + "just added a prayer request."
}
}, {
success: function() {
// Push was successful
},
error: function(error) {
throw "Got an error " + error.code + " : " + error.message;
}
});
}
});
答案 0 :(得分:2)
乍一看,你的功能似乎没有任何问题,但是因为你总是在保存祷告后尝试发送推送通知,你确定你没有保存对象两次吗?这可能是之后两次调用afterSave的原因。
我曾遇到过的一件事是,我有两段云代码
当我试图保存它时,第一个会修改一个对象。 第二个是在保存对象后我会做一个推动。
在我在保存过程中修改对象的代码中,我保存了修改后的对象,导致我的Parse.Cloud.afterSave被同一个对象触发了两次
答案 1 :(得分:0)
服务器端
客户端