今天在写一个用户信息接口的时候,报错id字段没有定义,我用的postman进行mock。
cannnot read property “id” of undefinned
数据用户信息表的id字段为主键,自增,此接口为权限接口,登录时要携带token字符串。
采用jwt的方式生成token,利用中间件jsonwebtoken和express-jwt进行token的加密和解密
问题在于生成token的时候,payload里包含了id,解析后无法识别。
// 用户信息处理函数
const userinfosql = "select id, name, sex from users where id=?"
exports.userinfo = (req,res) => {
// const id = ObjectId(req.user.id)
console.log(req.auth);
db.query(userinfosql, req.auth.id, (err, results) => {
// 1. 执行 SQL 语句失败
if (err) return res.cc(err)
// 2. 执行 SQL 语句成功,但是查询到的数据条数不等于 1
if (results.length !== 1) return res.cc('获取用户信息失败!')
// 3. 将用户信息响应给客户端
res.send({
status: 0,
message: '获取用户基本信息成功!',
data: results[0],
})
})
}
console.log(req.user)也是undefined,跑去npm看了一下,才明白:
The decoded JWT payload is available on the request via the auth property.