Node.js-如何在登录功能中获取用户详细信息

时间:2018-10-12 06:10:50

标签: node.js

这是我的user.js

/ Route for user logins
router.post('/authenticate', function(req, res) {
  User.findOne({ email: req.body.email }).select('email password active').exec(function(err, user) {
    if (err) throw err; // Throw err if cannot connect

    // Check if user is found in the database (based on username)           
    if (!user) {
      res.json({ success: false, message: 'Username not found' }); // Username not found in database
    } else if (user) {
      // Check if user does exist, then compare password provided by user
      if (!req.body.password) {
        res.json({ success: false, message: 'No password provided' }); // Password was not provided
      } else {
        var validPassword = user.comparePassword(req.body.password); // Check if password matches password provided by user 
        if (!validPassword) {
          res.json({ success: false, message: 'Could not authenticate password' }); // Password does not match password in database
        } else if (!user.active) {
          res.json({ success: false, message: 'Account is not yet activated. Please check your e-mail for activation link.', expired: true }); // Account is not activated 
        } else {
          //var token = jwt.sign({ email: user.email}, config.secret, { expiresIn: '24h' }); // Logged in: Give user token
          const token = jwt.sign(user.toJSON(), config.secret, {expiresIn: 604800 // 1 week
        });
          res.json({ success: true, message: 'User authenticated!', token: 'JWT '+token,
          user: {
            id: user._id,
            firstname: user.firstname,
            lastname: user.lastname,
            email: user.email
          }
        }); // Return token in JSON object to controller
        }
      }
    }
  });
});

此/ authenticate工作正常,但我无法获取用户的名和姓。我仅获取电子邮件,ID详细信息,我不知道我在哪里弄错了,请帮帮我。

1 个答案:

答案 0 :(得分:1)

在此行中从数据库中检索用户时

User.findOne({ email: req.body.email }).select('email password active').exec(function(err, user) {

您选择仅选择电子邮件密码和活动属性。 如果您需要名字和姓氏,则需要将其更改为

User.findOne({ email: req.body.email }).select('email password active firstname lastname').exec(function(err, user) {

编辑:更多信息

.select()方法的文档页面 https://mongoosejs.com/docs/api.html#query_Query-select

关于.select()的状态:

Specifies which document fields to include or exclude (also known as the query "projection")