NODE.JS:在EXPRESS保存请求数据时,CANNOT READ PROPERTY ‘ID‘ OF UNDEFINED

今天在写一个用户信息接口的时候,报错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.

才明白原来现在不用req.user了,用req.auth来获取解析后的数据。

你可能感兴趣的:(node.js,express,javascript)