I am new to nodejs and the Sequelize ORM framework. I am trying to get it to work with mysql. I have achieved great success, but at the moment Iām stuck in the part where you need to load the sequel in the models. But I get an error when the name is retrieved from the file.
WWW
var debug = require('debug')('sampleapp') var app = require('../server'); var models = require('../model'); app.set('port', process.env.PORT || 3000);
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 || "development"; var config = require(path.join(__dirname, '..', 'config', 'config.json'))[env]; var sequelize = new Sequelize(config.database, config.username, config.password, config); var db = {}; 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, gender: DataType.CHAR, cellNumber: DataType.INTEGER }, { instanceMethods : { create : function(onSuccess, onError){ var name = this.name; var lastName = this.lastName; var email = this.email; var gender = this.gender; var cellNumber = this.cellNumber; var password = this.password; var shasum = crypto.createHash('sha1'); shasum.update(password); password = shasum.digest('hex'); User.build({name: name, lastName: lastName, email: email, gender: gender, cellNumber: cellNumber, password: password}) .save().success(onSuccess).error(onError); } } }); };
I keep getting this error in db [model.name] = model:
TypeError: cannot read property 'name' from undefined
Some time ago there was this error. any help would be greatly appreciated