2017-12-11 25 views
1

私はNodejsとMongooseを初めて使用していますが、約束されていないmongooseの新リリースまではうまくいきました。私がしようとしているブルーバードの使用をお勧めします。私は次のコードを持っています:PreHookが動作しない状態で節約するスキーム

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を持っています。ブルーバードやネイティブ・プロミスを使用するかどうかは関係ありません。 "save"、 "update"、 "findOneAndUpdate"フックを試してみました.... –

答えて

0

この

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

私は自分のDBに接続する場所を試しましたが、それでも動作しません。 ハッシュの作成後にnext()を呼び出すまでは何も起こりません。 – user2955610

+0

これをuserModel.jsファイルに書き込む必要があります – Shubham

+0

まだ動作しません – user2955610

0

を試してみてください。 すべてのヘルプは

EDITをいただければ幸いですそれを修正することによって問題。

関連する問題