node.js - 尝试登录用户时,用户 ID 返回“未定义”
问题描述
我目前正在使用 Node.js 以及 Mongoose、Express-Session 和 Passport。这就是开发我项目的身份验证方面的全部内容。
今天我遇到一个问题:尝试登录用户时,他们的 Id 未定义。这是我认为与此问题相关的一段代码:
var User = require("./user-model"); //user model located in another file
var passport = require("passport");
var session = require("express-session");
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
app.post("/register", (req, res) => {
var user = new User(req.body);
user.save()
.then(item => {
User.findOne().sort({_id: 1}).exec(function(err, results, fields) {
if(err) throw err;
const user_id = results[0]; //Here, the console logs "undefined"
console.log(results[0]);
req.login(user_id, function(err) {
console.log("User saved to database");
res.redirect('/');
});
});
})
.catch(err => {
console.log(400).send("Unable to save to database");
});
});
passport.serializeUser(function(user_id, done) {
done(null, user_id);
});
passport.deserializeUser(function(user_id, done) {
done(null, user_id);
});
如果您需要任何额外的代码,我很乐意为您更新。
提前致谢!
解决方案
findOne
找到一个结果,因此得名。
所以results
参数实际上是user
,它可能应该是:
User.findOne().sort({_id: 1}).exec(function(err, user) {
if(err) throw err;
const user_id = user._id;
...
请注意,user
如果null
没有。
推荐阅读
- javascript - 如何在按钮单击时更新反应上下文提供程序状态
- python - 仅在表上更新一行
- html - 如何检查控制器中是否选中了复选框并将值添加到表中?
- sql - 基本代码优化,排除双重分组
- c# - Blazor 和最新预览版的问题
- laravel - 带有 postgresql 驱动程序的 Laravel Scout 中的 tsquery 和 phrasequery 有什么区别?
- apache - 服务器配置已打开,但客户端被拒绝访问
- java - 我的图像在 PDF 文档中返回为空白
- android - 如何使用 RXJava 调用的响应结果作为另一个 RXJava 函数中的 if 语句的条件?
- .net-core - 加载所需库 hostpolicy.dll 时出错