bcrypt from 'bcrypt';
import {registerValidation} from "./validations/auth.js";
import {validationResult} from "express-validator";
import UserModel from "./models/User.js";
mongoose.connect('mongodb+srv://name:pass@cluster0.zesdawo.mongodb.net/blog?retryWrites=true&w=majority')
.then(() => console.log('ok'))
.catch(err => console.log(err));
const app = express();
app.use(express.json());
app.post('/signup', registerValidation, async (req, res) => {
const errors = validationResult(req);
if (!(errors.isEmpty())) {
return res.status(400).json(errors.array());
}
const password = req.body.password;
const salt = await bcrypt.genSalt(10);
const passwordHash = await bcrypt.hash(password, salt);
const doc = new UserModel({
email: req.body.email,
fullName: req.body.fullName,
avatar: req.body.avatar,
passwordHash: passwordHash
});
const user= await doc.save();
res.json(user);
});
app.listen(3333, () => {
console.log('ok');
});
Все равно ошибка
ты указал required: true в схеме, возможно, что данные не доходят и возникает ошибка. Попробуй в роуте добавить console.log(req.body), чтобы узнать, приходят ли данные с клиента
С клиента данные приходят
Знаешь, скорее всего твой запрос к БД занимает слишком много времени. Думаю это связано с bcrypt. Попробуй задать меньший salt, чтобы хеширование не занимало слишком много времени или попробуй вовсе закоментировать строчки с хешированием, и сохранять чистый пароль, чтобы проверить в нём ли дело
Ща попробую, но думаю не поможет 😁
Ну или можешь увеличить таймаут
Пробовал, тоже самое
Не, не работает
Наврядли это поможет, но можешь попробовать стереть ?retryWrites=true&w=majority в коннекте
Знаешь, обычно я оборачиваю запрос к БД конструкцией try catch, чтобы видеть ошибки и чтобы сервер не падал
Так тоже обернул 🥹
Model.insertOne({ name: 'John' }, { timeout: 20000 }) Пробовала?
Не, не пробовал. Попробую
UserModel.insertOne?
new UserModel({ name: 'John' }, { timeout: 20000 })
УРАААА!
Сюда
Обсуждают сегодня