2016-01-10 74 views
0

我有一個AngularJS應用程序,人們可以在這裏評論文章 - 就像在博客中一樣。表單很好地工作,但我想驗證cloud code中的輸入,然後將其保存爲解析。Parse.com以前不會工作

我的問題是,不管我做什麼,看起來,輸入都被保存 - 即使是未定義的值。

Parse.Cloud.define("saveComment", function(request, response) { 
    "use strict"; 
    var Comment = Parse.Object.extend("Comment"); 
    var comment = new Comment(); 
    comment.set("commentName", request.params.commentName); 
    comment.set("commentEmail", request.params.commentEmail); 
    comment.set("commentWebsite", request.params.commentWebsite); 
    comment.set("commentContent", request.params.commentContent); 
    comment.set("commentFor", {__type:"Pointer", className:"Article", objectId:request.params.commentFor}); 
    comment.set("commentApproved", false); // need to add a check for Commenter status 

    /* ADD PERMISSIONS */ 
    var acl = new Parse.ACL(); 
    acl.setPublicReadAccess(true); 
    acl.setPublicWriteAccess(false); 
    comment.setACL(acl); 

    Parse.Cloud.useMasterKey(); 
    comment.save().then(function(comment) { 
     response.success(comment); 
    }, function(error) { 
     // error handling 
     response.error(error); 
    }); 
}); 

Parse.Cloud.beforeSave("saveComment", function(request, response) { 
    "use strict"; 

    var regexEmail = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2-10})?)$/i; 

    if (request.object.get("commentTest").length === 0) { 
     response.error(100); 
    } 
    else if (request.object.get("commentName").length === 0) { 
     response.error(200); 
    } 
    else if (!regexEmail.test(request.object.get("commentEmail"))) { 
     response.error(300); 
    } 
    else { 
     response.success(); 
    } 
}); 

在上面的例子中,我也試過var === undefined和負載簡單輸入驗證的其他變化,與正則表達式一起,你可以看到。

問題是,無論我在表單中的輸入字段中鍵入什麼內容,它都會被保存 - 就好像beforeSave函數從不觸發。

任何幫助,將不勝感激。

回答