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函數從不觸發。
任何幫助,將不勝感激。