sly_Chandan
sly_Chandan

Reputation: 3515

Sequelize Model class reference error in express application

sq.js:

var Sequelize = require('sequelize');
var sequelize = new Sequelize('postgres://chandan:duvarko315@localhost:5432/diary');

var User = sequelize.define('user', {
  username: {
    type: Sequelize.STRING,
    field: 'username' // Will result in an attribute that is firstName when user facing but first_name in the database
  },
  password: {
    type: Sequelize.STRING
  }
},{
timestamps: false,
});

User.sync({force: true}).then(function () {
  // Table created  
});

module.exports = User;

app.js:

var seq = require('./routes/sq');

passport.use(new passportLocal.Strategy(function(username,password, done){
  User.findOne({username: username}, function (err, user) {
      if (err) { return done(err); }
      if (!user) {
        return done(null, false, { message: 'Incorrect username.' });
      }
      if (!user.validPassword(password)) {
        return done(null, false, { message: 'Incorrect password.' });
      }
      return done(null,{ id:username, name:username});
    });
}));

I am getting the error: ReferenceError: User is not defined

Upvotes: 0

Views: 998

Answers (1)

R. Gulbrandsen
R. Gulbrandsen

Reputation: 3778

Its because you have declared the user model as seq in app.js. Change your declaration to:

var User = require('./routes/sq');

The variable Useronly lives in sq.js

Upvotes: 3

Related Questions