我对node.js很陌生,我正在尝试使用Node.js,Express,bcrypt,express-session和mongoose来实现简单的用户注册和登录表单。
无论何时用户登录,我都想将req.session.userID的值设置为用户的id。当我跟踪代码时,我找不到问题。我按照this link中的教程进行了后续学习,一切似乎都差不多。
模式:
var userModel = require('./../models/users');
router.post('/login', (req, res) => {
var email = req.body.email;
var password = req.body.password;
userModel.authenticate(email, password, (err, user) => {
console.log(user)
if (err) {
console.log(err)
}
else if (!user) {
console.log('Wrong Password')
}
else {
req.session.userId = user._id;
console.log(req.session.userId);
}
})
});
服务器:
library(dplyr)
df <- dataset %>%
group_by(state_id,city_id) %>%
group_by(three_month = round_date(weekly_dt, "quarter")) %>%
summarise_at(vars(starts_with('value')), mean)
在我记录req.session.userId的值的地方,它返回未定义!问题出在哪里?
答案 0 :(得分:1)
问题是回调函数返回TRUE。回调应该返回 user 数据。 回调(空,用户)
bcrypt.compare(password, user.password, (err, result) => {
if (result) {
callback(null, true)
}
应该是
bcrypt.compare(password, user.password, (err, result) => {
if (result) {
callback(null, user)
}