2013-02-16 2 views
1

내가 이벤트를 저장 몽구스의 사전 처리기를 지정하고 문서를 암호화하려고에 저장 사전을 사용하여 문서를 변경하는 방법 :저장하기 전에 몽구스

userShecma.pre('save', function(next) { 
    var self = {}; 
    self.Key = this.password;; 
    self.EncriptedString = encrypt.encrypt(JSON.stringify(this), this.password); 
    self.user = this.user 
    self.decrypt = function() { 
     var user = JSON.parse(encrypt.decrypt(this.EncriptedString, this.Key)); 
     for(var key in user) { 
      this[key] = user[key]; 
     } 
    } 
    for(var key in this){ 
     delete this[key]; 
    } 
    for(var key in self){ 
     this[key] = self[key]; 
    } 
    console.log(this); 
    next(self); 
}); 

내가 diffrent 가지의 무리를 시도, 때때로 오류가 발생하는 경우가 있습니다. 문서를 변경하지 못하는 경우도 있습니다.

당신이 어떤 더 많은 정보가 필요하면 알려줘,
아리

편집 : Benoir의 대답을 시도, 내가 this을 편집 할 수 없습니다.

답변

1

next()를 호출해야합니다 스키마에서.

+0

this.getValue와 this.setValue를 사용하여 스키마에서 정의하지 않은 속성을 편집 할 수있다. –

2

나는 next(self)을 호출하면 다음 처리기가 오류가 있다고 생각하고 문서를 저장하지 않을 것이라고 생각합니다. Benoir의 대답 + 추가하거나 문서에서에/속성을 제거가 정의 할 수 없습니다하지 않는 :

당신은

이 '오류 처리'에서 http://mongoosejs.com/docs/middleware.html 에서 봐이

이 내가 그것을 알아 냈다
+1

질문에 답할 수 없음 질문이 문서를 편집하는 방법 –

+1

'this'의 속성을 편집하여 문서를 편집합니다. 나는 당신이 올바르게 그것을한다고 생각하지만, 업데이트되지 않는 이유는'next'에 에러를 전달하여 저장하지 않기 때문이다. – Benoir

관련 문제