cphill
cphill

Reputation: 5914

ExpressJS - Sequelize - Unrecognized Data Type

I manually created a sql database and am now trying to set up my sequelize models to match the columns in my sql tables, but I've run into an issue with my model related to an unrecognized field type. I can't seem to pinpoint the error and if it is related to not matching the data type for a field in my database or that the sequelize does not recognize some of my code.

Here is my error:

/Users/user/Desktop/Projects/node/assistant/node_modules/sequelize/lib/model.js:90
      throw new Error('Unrecognized data type for field ' + name);
            ^
Error: Unrecognized data type for field pattern
    at null.<anonymous> (/Users/user/Desktop/Projects/node/assistant/node_modules/sequelize/lib/model.js:90:13)
    at /Users/user/Desktop/Projects/node/assistant/node_modules/sequelize/node_modules/lodash/index.js:2874:23
    at /Users/user/Desktop/Projects/node/assistant/node_modules/sequelize/node_modules/lodash/index.js:3395:24
    at /Users/user/Desktop/Projects/node/assistant/node_modules/sequelize/node_modules/lodash/index.js:3073:15
    at baseForOwn (/Users/user/Desktop/Projects/node/assistant/node_modules/sequelize/node_modules/lodash/index.js:2046:14)
    at Function.mapValues (/Users/user/Desktop/Projects/node/assistant/node_modules/sequelize/node_modules/lodash/index.js:3394:9)
    at new Model (/Users/user/Desktop/Projects/node/assistant/node_modules/sequelize/lib/model.js:74:50)
    at Sequelize.define (/Users/user/Desktop/Projects/node/assistant/node_modules/sequelize/lib/sequelize.js:577:15)
    at Object.<anonymous> (/Users/user/Desktop/Projects/node/assistant/app/models/imagesModel.js:9:24)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/Users/user/Desktop/Projects/node/assistant/app/routes.js:4:14)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)

Here is my model:

var Sequelize      = require('sequelize');
var sequelize = new Sequelize('db', 'admin', 'pwd', {
    host: 'database-host',
    port: 3306,
    dialect: 'mysql'
});


var Images = sequelize.define('images', {
    pattern: {
        type: sequelize.STRING,
        field: 'pattern'
    },
    color: {
        type: sequelize.STRING,
        field: 'color'
    },
    imageUrl: {
        type: sequelize.STRING,
        field: 'imageUrl'
    },
    imageSource: {
        type: sequelize.STRING,
        field: 'imageSource'
    },
    description_id: {
        type: sequelize.INTEGER,
        field: 'description_id'
    }
});

module.exports = Images;

Upvotes: 5

Views: 12084

Answers (2)

Victor  O.
Victor O.

Reputation: 21

You use your sequelize constructor to define your table with the sequelize.define() method, while you use the object Sequelize in which your sequelize package was assigned to, to carry out functions on each of your values in your nested object. For example,

color: {
    type: Sequelize.STRING,
    field: 'color'
}

and not,

color: {
  type: sequelize.STRING,
  field: 'color'
}

Upvotes: 2

Nguyen Sy Thanh Son
Nguyen Sy Thanh Son

Reputation: 5376

I think that your code should be:

var Sequelize      = require('sequelize');
var sequelize = new Sequelize('db', 'admin', 'pwd', {
    host: 'database-host',
    port: 3306,
    dialect: 'mysql'
});


var Images = sequelize.define('images', {
    pattern: {
        type: Sequelize.STRING,
        field: 'pattern'
    },
    color: {
        type: Sequelize.STRING,
        field: 'color'
    },
    imageUrl: {
        type: Sequelize.STRING,
        field: 'imageUrl'
    },
    imageSource: {
        type: Sequelize.STRING,
        field: 'imageSource'
    },
    description_id: {
        type: Sequelize.INTEGER,
        field: 'description_id'
    }
});

module.exports = Images;

You can refer to http://docs.sequelizejs.com/en/latest/api/datatypes/, http://docs.sequelizejs.com/en/latest/docs/models-definition/ or an example here: https://github.com/thanhson1085/angular-admin-seed/blob/master/server/models/user.js

Upvotes: 9

Related Questions