2017-12-11 11 views
1

나는 Nodejs와 몽구스를 처음 접했을 때 약속이 가치가 떨어지는 몽구스의 새 릴리스가 제대로 작동하고있었습니다. 내가하려고하는 블루 버드를 사용하는 것이 좋습니다. 다음 코드가 있습니다 :프리 훅이 작동하지 않는 몽구스 저축 계획

app.post('/users', (req, res) => { 
var body = _.pick(req.body, ['email', 'password']); 
var user = new User(body); 
user.save().then(() => { 
    return user.generateAuthToken(); 
}).then((token) => { 
    res.header('x-auth', token).send(user); 
}).catch((e) => { 
    res.status(400).send(e); 
}) 

});

및 프리 훅 :

UserSchema.pre('save', function (next) { 
var user = this; 
if (user.isModified('password')) { 
    bcrypt.genSalt(10, (err, salt) => { 
     bcrypt.hash(user.password, salt, (err, hash) => { 
      user.password = hash; 
      next(); 
     }); 
    }); 
} else { 
    next(); 
} 

});

해시를 생성 한 후 next()을 호출하면 아무 일도 일어나지 않습니다. 왜 이런 일이 발생합니까? 통화가 결코 generateAuthToken() 함수로 간다 이

+0

내 프리 후크도 작동하지 않습니다. 나는 몽구스 4.13.6을 가지고있다. Bluebird 또는 기본 약속을 사용하면 중요하지 않습니다. "저장", "업데이트", "findOneAndUpdate"후크를 시도했습니다 .... –

답변

0

내가 몽구스 변수의 내 수입이 잘못이라고 판명이

var mongoose = require('mongoose'); 
mongoose.Promise = require('bluebird'); 
+0

나는 내 DB에 연결하고 여전히 작동하지 않는 곳에서 시도했습니다. hash가 생성 된 후 next()를 호출 할 때까지 아무 일도 일어나지 않는다. – user2955610

+0

userModel.js 파일에 이것을 써야한다. – Shubham

+0

여전히 작동하지 않는다. – user2955610

0

을 시도하고 내가 해결 한 : 모든 도움은

편집 주시면 감사하겠습니다 그것을 고쳐 문제.