让用户使用parse.com的云代码关闭不同的通知类型

时间:2015-07-24 22:26:26

标签: ios parse-platform push-notification cloud-code

第一次在这里发帖所以请耐心等待。我正在深入研究parse.com的云代码而不了解任何javascript知识,所以我可以使用一些帮助。

我得到了一个使用Cloud Code的AfterSave推送通知,但我需要一种方法来允许用户订阅/取消订阅不同类型的通知。我目前尝试这样做的方法是在解析用户表中存储bool值以用于不同类型的通知,但是我在云代码中无法获得该值。这是我的云代码:

Parse.Cloud.afterSave("Comment", function(request){
    var comment = request.object;
    var fromUser = request.user;
    var onIdea = comment.get("ideaPointer");
    var ideaOwner = onIdea.get("owner");
    var getNotification = ideaOwner.get("getCommentNotifications");
    var message = fromUser.getUsername() + " commented on your idea.";

    if (getNotification){

        var pushQuery = new Parse.Query(Parse.Installation);
        pushQuery.equalTo("user", ideaOwner);
        Parse.Push.send({
            where: pushQuery,
            data: {
                alert: message,
                ideaId: onIdea.id
            }
        });
    }
});

以下是保存评论时打印到日志的错误:

Result: TypeError: Cannot call method 'get' of undefined at main.js:6:34

以下是它遇到问题的一行,因为在我将它与if语句一起添加之前它正在工作:

var getNotification = ideaOwner.get("getCommentNotifications");

getCommentNotifications是用户表中的bool值。

我也不确定我的if语句是否写得正确:

if (getNotification){}

我还验证了thinkOwner我测试的getCommentNotifications值是否为空。

有关此问题的任何帮助,或者更好的方式允许用户订阅/取消订阅不同的通知类型,我们将非常感谢。

1 个答案:

答案 0 :(得分:0)

必须获取这些指针的另一端。如果它们确实是指针,那么您可以将它们视为未完全初始化的对象,因此......

Parse.Cloud.afterSave("Comment", function(request){
    var comment = request.object;
    var fromUser = request.user;
    var onIdea = comment.get("ideaPointer");
    onIdea.fetch().then(function(onIdeaObject) {
        var ideaOwner = onIdea.get("owner");
        return ideaOwner.fetch();
    }).then(function(ideaOwnerObject) {
        var getNotification = ideaOwnerObject.get("getCommentNotifications");
        if (getNotification) {
            var message = fromUser.getUsername() + " commented on your idea.";
            var pushQuery = new Parse.Query(Parse.Installation);
            pushQuery.equalTo("user", ideaOwnerObject);
            return Parse.Push.send({ where: pushQuery, data: { alert: message, ideaId: onIdea.id } });
        } 
    });
});