How Implement a simple reference?

15 views
Skip to first unread message

Claudio Gatica

unread,
Mar 16, 2018, 10:38:29 AM3/16/18
to Sequelize
Hello,

  Im learning how to use sequelize to implement some tables on postgresql but i have the error "ERROR: MessageTypes is not defined" when i run the command "sequelize db:migrate"


the steps i follow before this error were,

- run those commands:
"sequelize model:create --name DataMessagesLog --attributes epochId:bigint,jsonVarBody:json"
"sequelize model:create --name MessageType --attributes name:string,description:string"

- update the models and migrations like this

MODELS
messagetype.js
'use strict';
module.exports = (sequelize, DataTypes) => {
var MessageType = sequelize.define('MessageType', {
name: DataTypes.STRING,
description: DataTypes.STRING
}, {});
MessageType.associate = function(models) {
// associations can be defined here
MessageType.belongsTo(DataMessagesLog);
};
return MessageType;
};

datamessageslog.js
'use strict';
module.exports = (sequelize, DataTypes) => {
 var DataMessagesLog = sequelize.define('DataMessagesLog', {
   epochId: DataTypes.BIGINT,
   jsonVarBody: DataTypes.JSON
 }, {});
 DataMessagesLog.associate = function(models) {
   // associations can be defined here
   DataMessagesLog.hasMany(MessageType, {as: 'idMsgType'});
 };
 return DataMessagesLog;
};

MIGRATIONS
20180315205058-create-message-type.js
'use strict';
module.exports = {
 up: (queryInterface, Sequelize) => {
   return queryInterface.createTable('MessageTypes', {
     id: {
       allowNull: false,
       autoIncrement: true,
       primaryKey: true,
       type: Sequelize.INTEGER
     },
     name: {
       type: Sequelize.STRING
     },
     description: {
       type: Sequelize.STRING
     },
     createdAt: {
       allowNull: false,
       type: Sequelize.DATE
     },
     updatedAt: {
       allowNull: false,
       type: Sequelize.DATE
     }
   });
 },
 down: (queryInterface, Sequelize) => {
   return queryInterface.dropTable('MessageTypes');
 }
};

20180315205054-create-data-messages-log.js
'use strict';
module.exports = {
 up: (queryInterface, Sequelize) => {
   return queryInterface.createTable('DataMessagesLogs', {
     id: {
       allowNull: false,
       autoIncrement: true,
       primaryKey: true,
       type: Sequelize.INTEGER,
       
     },
     epochId: {
       type: Sequelize.BIGINT
     },
     idMsgType:{
       onDelete: 'CASCADE',
       references: {
         model: MessageTypes,
         key: 'id'
       },
       type:Sequelize.INTEGER
     },
     jsonVarBody: {
       type: Sequelize.JSON
     },
     createdAt: {
       allowNull: false,
       type: Sequelize.DATE
     },
     updatedAt: {
       allowNull: false,
       type: Sequelize.DATE
     }
   });
 },
 down: (queryInterface, Sequelize) => {
   return queryInterface.dropTable('DataMessagesLogs');
 }
};

-Then, run  "sequelize db:migrate " and it returns "ERROR: MessageTypes is not defined"


i read a lot of guides but cant solve this simple error. 

by the way im using node v6.10.2 and sequelize: "^4.35.2"

Thx for your time.
Reply all
Reply to author
Forward
0 new messages