我已经使用 Node 创建了一个登录程序,目前我只从 jwt 获取 token ,但我需要用户名、_id 和手机号码以及已经存储在数据库中的 token 如何获取此详细信息。请帮助我,我是 Node 和 mongo 的新手
--------架构------------
var mongoose = require('mongoose');
var users = new mongoose.Schema({
_id: Number,
username: String,
mobile: Number,
email: { type: String, required: true},
password: { type: String, required: true},
});
module.exports = mongoose.model('users', users);
const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
const User = require('../models/users');
router.post('/login', (req, res, next) => {
User.find({ email: req.body.email })
.exec()
.then(users => {
if (users.length < 1) {
return res.status(401).json({
message: "This email does not exist please registor"
});
}
console.log(users[0].password);
bcrypt.compare(req.body.password, users[0].password, (err, result) => {
if (err) {
return res.status(401).json({
message: "Auth fail"
});
}
console.log(result);
if (result) {
const token = jwt.sign({
email: users[0].email,
userId: users[0]._id
}, process.env.JWT_KEY,
{
expiresIn: "1h"
}
);
return res.status(200).json({
message: 'login successfull',
token: token
});
} else {
res.status(401).json({
message: "password is incorrect"
});
}
});
})
.catch(err => {
res.status(500).json({
error: err
});
});
});
module.exports = router;
请帮我获取用户名、ID 和手机以及 token
最佳答案
在创建 token 时添加这些信息。
const token = jwt.sign({
username: users[0].username,
email: users[0].email,
userId: users[0]._id,
mobile: users[0].mobile
}, process.env.JWT_KEY,
{
expiresIn: "1h"
}
);
此外,您应该使用 Mongoose “findOne”而不是使用“find”,它将允许您使用像“user.email”这样的用户对象,而不是处理数组并执行“users[0]”。
关于node.js - 使用node js从mongodb获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49420141/