ExpressJS - Sequelize - 无法识别的数据类型

ExpressJS - Sequelize - Unrecognized Data Type

我手动创建了一个 sql 数据库,现在正尝试设置我的续集模型以匹配我的 sql 表中的列,但我 运行 遇到了问题我的模型与无法识别的字段类型相关。我似乎无法查明错误,如果它与不匹配我的数据库中某个字段的数据类型有关,或者 sequelize 无法识别我的某些代码。

这是我的错误:

/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)

这是我的模型:

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;

我认为你的代码应该是:

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;

可以参考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

您使用 sequelize 构造函数通过 sequelize.define() 方法定义 table,同时使用您的 sequelize 包被分配到的对象 Sequelize 来执行功能在嵌套对象中的每个值上。 例如,

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

而不是,

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