mongooseを使用してJSONのbcryptハッシュパスワードをmongodbに保存できません。私はsetPasswordスキーマメソッドの実装に間違いがあると思います。私は 'bcrypt'を 'crypto'の実装に置き換え、うまくいきました。ハッシュされた文字列はデータベースに格納されました。しかし、できないは 'bcryptの'mongooseを使用してJSONのbcryptハッシュされたパスワードをmongodbに保存できません。
マイmodel.js実装
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
const Schema = mongoose.Schema;
// User Schema
const userSchema = new Schema({
username: {
type: String,
index: true
},
password: {
type: String
},
email: {
type: String
},
name: {
type: String
}
});
userSchema.methods.setPassword = function(password) {
const saltRounds = 10;
bcrypt.hash(password, saltRounds, function(err, hash) {
this.password = hash;
});
};
mongoose.model('User', userSchema);
マイルータコントローラの実装bcrypt.hash
ないuserSchemaオブジェクトへ
const passport = require('passport');
const mongoose = require('mongoose');
const User = mongoose.model('User');
const register = (req, res) => {
const newUser = new User();
newUser.name = req.body.name;
newUser.email = req.body.email;
newUser.username = req.body.username;
newUser.setPassword(req.body.password);
newUser.save((err) => {
// Validations error
if (err) {
res.status(400).json(err);
return;
}
res.status(200).json({
success: true,
message: 'Registration Successful'
});
});
};
あなたが確認していない 'bcrypt.hash'によって生成されたエラーがあるかもしれません。 –
@BrahmaDev if(err)throw err;行を追加しました。それでもエラーは発生しません。 –
同期バージョンを試すことはできますか? 'this.password = bcrypt.hashSync(password、saltRounds);' –