Я строю Node, Express API для аутентификации пользователей. Я использую монго для хранения данных. Используя почтальона, я отправил запрос / post, передав следующий объект
{
"username": "abc",
"password": "abc123",
"email": "abc@ghi.com"
}
под требованием.
Вот так выглядит моя / пост-функция в коде:
//create one user
router.post('/createUser', async (req, res) => {
if (!req.body.email || !req.body.password || !req.body.username) {
return res.status(400).send({
message: "No username/password/email specified"
});
}
const newUser = new User({
email: req.body.email,
username: req.body.username,
password: req.body.password
});
await User.create(newUser, (err, data) => {
//res.send(data);
if(err) {
console.log(err);
res.status(500).send('Error creating user');
}
});
});
Метод User.create () вызывает метод .save () под одеялом. У меня есть предварительное условие сохранения, чтобы зашифровать пароль. При запуске сообщения я получаю сообщение об ошибке UnhandledPromiseRejectionWarning: Error: data and salt arguments required
Я сделал некоторые записи в консоли и заметил, что это происходит, потому что user.password входит как неопределенный. Похоже, мой запрос от почтальона не проходит должным образом.
Edit:
Вот схема:
const userSchema = new mongoose.Schema({
id: {
type: Number
},
email: {
type: String,
unique: true,
required: true,
},
username: {
type: String,
unique: true,
required: true
},
password: {
type: String,
required: true
},
});
userSchema.pre('save', (next) => {
const user = this;
console.log(user.password);
bcrypt.hash(user.password, 10, (err, hash) => {
if (err) {
next(err);
} else {
user.password = hash;
next();
}
});
});
Может кто-нибудь помочь мне понять, что не так?