2012-07-13 35 views
1

推出我自己獨特的電子郵件檢查方法。使用.equalTo和.find即使在數據庫中沒有任何內容,我仍然可以獲得成功。如果找不到匹配項,我需要它才能報錯。有任何想法嗎?在解析中滾動您自己的唯一電子郵件檢查

// Check if email is already in use 
    var query = new Parse.Query(Email); 
    query.equalTo("email", email); 
    query.find({ 
    success: function(results) { 
     self.$(".signup-form .error").html("Email already in use.").show(); 

     this.$(".signup-form button").removeAttr("disabled"); 
    }, 
    error: function(error) { 
     if (error.code === Parse.Error.OBJECT_NOT_FOUND) { 
     alert("Perfect, could not find this email!"); 

     Parse.User.signUp(username, password, { ACL: new Parse.ACL() }, { 
      // ... signUp method here ... 
     }); 
     } else if (error.code === Parse.Error.CONNECTION_FAILED) { 
     alert("Uh oh, we couldn't even connect to the Parse servers!"); 
     } 
    } 
    }); 
+0

我不知道這是用適當的語言標記它。請相應地做。 – Drise 2012-07-13 21:11:29

回答

1

即使未找到符合條件的對象,find方法也會成功返回。您可以檢查結果是否包含任何對象(如果未收到電子郵件,則不應該),但您可能要查找的內容是.first() method

+0

是的,gotcha!事實上,如果你知道你的結構可能只有一個匹配,使用first(),所以你不需要遍歷find()返回的數組。帽子提示是使用if(returnedEmail instanceof Email)來檢查實際上是否有匹配而不是[]空對象。 – 2012-07-27 02:17:15

0

另外,你有沒有考慮過使用在解析實際的User class?這將自動執行電子郵件唯一性,併爲您提供許多更重要的功能,例如安全密碼存儲,(可選)電子郵件驗證,密碼重置API,訪問控制和社交集成。

+0

我想推出自己的應用程序,因爲該應用程序通過電子郵件進行傳輸,並且不需要您擁有用戶帳戶直到您想要。似乎沒有辦法創建一個「待定」的Parse.User對象afaik。因此,我推出了自己的Email類,然後可以在任何階段將一個或多個電子郵件對象設置爲一個User對象。是的,如果你可以放鬆到用戶類的條件和/或有一個單獨的電子郵件類與額外(真棒!)功能,這將是美好的。 – 2012-07-16 22:21:08

+0

在旁註中,Héctor建議的.first方法仍然以某種方式成功返回「未定義」。 – 2012-07-16 22:22:46

+0

由於JavaScript是單線程的,JavaScript API只允許異步操作。首先不返回_return_,它將返回值傳遞給成功函數。 而不是 foo = query.first(); doSomething(foo); 使用 query.first({0}成功:function(object){doSomething(object);} }); – 2012-07-17 23:11:48