Итак, я получаю user.save - это не функция, и я не могу понять, почему он говорит, что это не функция, я добавил ошибочный резерв, и он все еще не исправил это. Просто интересно, что некоторые из вас думают, что проблема может быть?
пользователей. js:
router.post("/login", async function(req, res, next) {
const { email, password } = req.body;
const user = new UserModel(null, null, email, password);
const loginResponse = await user.userLogin();
// console.log('login response is', loginResponse);
if (!!loginResponse.isValid) {
req.session.is_logged_in = loginResponse.isValid;
req.session.user_id = loginResponse.id;
req.session.name = loginResponse.name;
res.redirect("/");
} else {
res.sendStatus(403);
}
});
router.post("/register", async (req, res) => {
const { name, email } = req.body;
const salt = bcrypt.genSaltSync(10);
const hash = bcrypt.hashSync(req.body.password, salt);
const user = new UserModel(null, name, email, hash);
user.save().then(() => {
res.redirect("/users/login");
});
});
Кроме того, userModel может быть использован только в модели: const db = require ("./ conn");
class User {
constructor(id, job_id, bookmark_id, name, email, password) {
this.id = id;
this.job_id;
this.bookmark_id;
this.name = name;
this.email = email;
this.password = password;
}
async addUser() {
try {
const response = await db.one(
"INSERT INTO applicants (name, email, password) VALUES ($1, $2, $3) RETURNING id;",
[this.name, this.email, this.password]
);
return response;
} catch (error) {
console.error("ERROR", error);
return error;
}
}
async loginUser() {
try {
const response = await db.one(
`SELECT id, name, password FROM applicants WHERE email = $1;`,
[this.email]
);
console.log("response is", response);
const isValid = this.checkpassword(response.password);
if (!!isValid) {
const { id, name } = response;
return { isValid, id, name };
} else {
return { isValid };
}
} catch (error) {
console.error("ERROR", error);
return error;
}
}
}
module.exports = User;