2014-02-28 5 views
0

나는 처음으로 사용하는 Geddy js 프레임 워크를 사용하는 프로젝트에 참여하고 있습니다. 현재 사용자를위한 모델 내부에서 create 메서드를 수정하려고합니다. 에 관계없이 '저장'에 if (user.isValid()) { user.password = cryptPass(user.password); user.suburb = ""; user.state = ""; user.postcode = ""; }Geddy Save User

수익금 :

this.create = function (req, resp, params) { 
    var self = this 
     , user = geddy.model.User.create(params); 

    //need to ensure that the user agrees with the terms and conditions. 

    // Non-blocking uniqueness checks are hard 
    geddy.model.User.first({username: user.username}, function(err, data) { 
     if (data) { 
     params.errors = { 
      username: 'This username is already in use.' 
     }; 
     //self.transfer('add'); 
     } 
     else { 
     if (user.isValid()) { 
      user.password = cryptPass(user.password); 
      user.suburb = ""; 
      user.state = ""; 
      user.postcode = ""; 
     } 
     user.save(function(err, data) { 
      if (err) { 
      params.errors = err; 
      self.transfer('add'); 
      } 
      else { 
       // setup e-mail data with unicode symbols 
       var mailOptions = { 
        from: "App ✔ <[email protected]>", // sender address 
        to: user.email, // list of receivers 
        subject: user.username + " Thank you for Signing Up ✔", // Subject line 
        text: "Please log in and start shopping! ✔", // plaintext body 
        html: "<b>Please log in and start shopping!✔</b>" // html body 
       } 

       smtpTransport.sendMail(mailOptions, function(error, response){ 
        if(error){ 
         console.log(error); 
        }else{ 
         console.log("Message sent: " + response.message); 
        } 

        // if you don't want to use this transport object anymore, uncomment following line 
        smtpTransport.close(); // shut down the connection pool, no more messages 
       }); 
      self.redirect({controller: self.name}); 
      } 
     }); 
     } 
    }); 
}; 

당신이 코드를 보면 소위 사용자가과 같이 유효한지 볼 수있는 검사가 분명히 존재한다 : 여기에 아래의 코드는 사용자의 유효 여부. 왜 코드가 이런 식으로 생각하고 있습니까? 그것은 무의미하게 들린다. 프로젝트에 참여한 원 개발자에게 프로젝트에 대해 물었고 프로젝트를 만들 때이 모델이 생성되었다고 말했습니다.

그래서 혼란스러운 상태가되면 왜 누군가가 저에게 save 메소드가 if 문 외부에 있는지 왜 말해 줄 수 있습니까? Geddy의 원래 제작자가 의도 한 것입니까? 아니면 정말로 무의미한 것이고 그것을 바꾸어야합니까?

감사합니다.

+0

'user.isValid'의 기능은 무엇입니까? 에러를 반환하기 전에'user.save'가 평가하는 속성을 설정할 수 있습니다. 아니면 항상 절약 할 수있는 디자인 일 수 있습니다. 확실히 이상하게 보입니다. 그러나 유효하거나 유효하지 않은 사용자에게 예상대로 작동합니까? –

+0

분명히 그것은 모델 및 그 속성을 확인하는 Geddy의 방법입니다. – koramaiku

+0

미안하지만, 나는 geddy에 익숙하지 않습니다. 그러나 사용자가 유효하지 않은 경우 오류를 반환하고자하는 것처럼 보입니다. –

답변

0

Geddy의 save() 데이터가 유효하지 않은 경우 호출이 실패합니다 (강제 플래그가 설정되어 있지 않으면 호출되지 않습니다). 실제로는 isValid() 호출을 사용합니다. 따라서 여기에있는 것처럼 보이는 것은 모든 오류에 대해 단일 오류 처리기를 사용하는 방법입니다.

user.password의 경우 데이터가 유효 해 보이는 경우에만 암호화 된 데이터로 설정됩니다.이 설정은 작동하도록 유효성 검사 유형을 설정하는 것입니다. 빈 암호로도 crypted 문자열은 그렇지 않은 것으로 간주됩니다.