diff --git a/lib/sequelize.js b/lib/sequelize.js index 39f81c2b29a5..1ece97bddc3a 100755 --- a/lib/sequelize.js +++ b/lib/sequelize.js @@ -1095,9 +1095,14 @@ class Sequelize { type = dialectTypes[type.key].extend(type); } - if (type instanceof DataTypes.ARRAY && dialectTypes[type.type.key]) { - type.type = dialectTypes[type.type.key].extend(type.type); + if (type instanceof DataTypes.ARRAY) { + if (!type.type) { + throw new Error('ARRAY is missing type definition for its values.'); + } else if (dialectTypes[type.type.key]) { + type.type = dialectTypes[type.type.key].extend(type.type); + } } + return type; } diff --git a/test/integration/sequelize.test.js b/test/integration/sequelize.test.js index 9e98ebd132d1..3ddabb937aa1 100755 --- a/test/integration/sequelize.test.js +++ b/test/integration/sequelize.test.js @@ -1205,6 +1205,16 @@ describe(Support.getTestDialectTeaser('Sequelize'), () => { }); }); + describe('define', () => { + it('raises an error if no values are defined', function() { + expect(() => { + this.sequelize.define('omnomnom', { + bla: { type: DataTypes.ARRAY } + }); + }).to.throw(Error, 'ARRAY is missing type definition for its values.'); + }); + }); + describe('define', () => { [ { type: DataTypes.ENUM, values: ['scheduled', 'active', 'finished']},