1

In passport.js,

When I console.log(jwtPayload), it shows the unexpected result:

{
  dataValues: {
    id: '06c19eb0-995f-45f4-81d7-26ec3b401234',
    email: 'CCCC@gmail.com',
    createdAt: '2021-05-14T01:51:31.000Z',
    updatedAt: '2021-05-14T01:51:31.000Z'
  },
  _previousDataValues: {
    id: '06c19eb0-995f-45f4-81d7-26ec3b401234',
    email: 'CCCC@gmail.com',
    createdAt: '2021-05-14T01:51:31.000Z',
    updatedAt: '2021-05-14T01:51:31.000Z'
  },
  _changed: {},
  _options: {
    isNewRecord: false,
    _schema: null,
    _schemaDelimiter: '',
    raw: true,
    attributes: [ 'id', 'email', 'createdAt', 'updatedAt' ]
  },
  isNewRecord: false,
  iat: 1620961695
}

What I want is:

  {
    id: '06c19eb0-995f-45f4-81d7-26ec3b401234',
    email: 'CCCC@gmail.com',
    createdAt: '2021-05-14T01:51:31.000Z',
    updatedAt: '2021-05-14T01:51:31.000Z'
  }

passport.js

var passport = require('passport');
const passportJWT = require("passport-jwt");
const JWTStrategy   = passportJWT.Strategy;
var LocalStrategy = require('passport-local').Strategy;
const ExtractJWT = passportJWT.ExtractJwt;

const bcrypt = require('bcryptjs');

var User = require('../models/Users')

module.exports = function(passport) {


passport.use(new JWTStrategy({
  jwtFromRequest: ExtractJWT.fromAuthHeaderAsBearerToken(),
  secretOrKey   : 'your_jwt_secret'
},
function (jwtPayload, done) {
  console.log(jwtPayload)  <-------------------------it logs unexpected result
  return User.findOne({where: {id:jwtPayload.id}})
      .then(user => {
          return done(null, user);
      })
      .catch(err => {
          return done(err);
      });
}
));

};

models/User.js

const Sequelize = require('sequelize');
const DataTypes = Sequelize.DataTypes;
const db = require('../sequelize')

let users = db.define('users', {
    id: {
      type: DataTypes.UUID,
      defaultValue: DataTypes.UUIDV4,
      allowNull: false,
      primaryKey: true
    },
    email: {
        type: DataTypes.STRING,
        allowNull: false,
        unique: 'email'
    },
    password: {
      type: DataTypes.STRING,
    },
  },

);
  
module.exports = users;


After long time of searching, I find this post similar to my situation, so I modify my sequelize.js by adding query:{raw:true}.

However, it still doesn't works even I tried both raw:true and raw: false

const { Sequelize } = require('sequelize');

const sequelize = new Sequelize('CCCC_dev', 'admin', '1234', {
  dialect: 'mysql',
  logging: false,
  query:{raw:true},  <--------------------------------------added this line
  define: {
    freezeTableName: true,
    charset: 'utf8mb4',
    collate: 'utf8mb4_unicode_ci'
  },
  timezone: "+08:00"
});

sequelize.sync({alter: true})

module.exports = sequelize;
CCCC
  • 5,665
  • 4
  • 41
  • 88

0 Answers0