Andre Coetzee
Andre Coetzee

Reputation: 1310

Getting undefined error when doing a build with sequelize and express

I am retrieving data from a form. On the post when I want to do a build with sequilize I am getting the error:

TypeError: Cannot read property 'build' of undefined

index.js

router.post('/register', function(req, res){
  var name = req.body.name;
  var lastName = req.body.lastName;
  var email = req.body.email;
  var cellNumber = req.body.cellNumber;
  var password = req.body.password;
    console.log(req.body.lastName);
  models.User.build({name: name, lastName: lastName, email: email, cellNumber: cellNumber, password: password})
      .save();
});

index.js

"use strict"
var fs        = require('fs');
var path      = require('path');
var Sequelize = require('sequelize');
var debug = require('debug');
var env = process.env.NODE_ENV || "test";
var config    = require(path.join(__dirname, '..', 'config', 'config.json'))[env];
var db        = {};
var sequelize = new Sequelize(config.database, config.username, config.password, config);

  sequelize.authenticate().then(function(){
    console.log('Database has been successfully authenticated');
    return true;
  }).catch(function(err){
    console.log('Failed to authenticate database: ', err);
    return false;
  });

fs.readdirSync(__dirname)
  .filter(function(file) {
    return (file.indexOf(".") !== 0) && (file !== 'index.js')
  })
  .forEach(function(file) {
    var model = sequelize['import'](path.join(__dirname, file))
    db[model.name] = model
  });


db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;

user.js

module.exports = function(sequelize, DataType){

  var User = sequelize.define('user', {
    name: DataType.STRING,
    password: DataType.STRING,
    lastName: DataType.STRING,
    email: DataType.STRING,
    cellNumber: DataType.INTEGER
  });
  return User;
};

www

#!/usr/bin/env mode
var debug = require('debug')('entreeapp')
var app = require('../server');
var models = require('../model');

app.set('port', process.env.PORT || 3000);

//server running
models.sequelize.sync({
    force: true
}).then(function () {
    var server = app.listen(app.get('port'), function(){
        console.log('The magic is happening on port '+server.address().port);
    });
});

any help would be greatly appreciated.

Upvotes: 0

Views: 1081

Answers (1)

cshion
cshion

Reputation: 1213

... sequelize.define('user', { .. 

should be :

... sequelize.define('User', { .. 

Upvotes: 4

Related Questions