Upgrade to v6
Sequelize v6 is the next major release after v5. Below is a list of breaking changes to help you upgrade.
Breaking Changes
Support for Node 10 and up
Sequelize v6 will only support Node 10 and up #10821.
CLS
You should now use cls-hooked package for CLS support.
const cls = require('cls-hooked');
const namespace = cls.createNamespace('....');
const Sequelize = require('sequelize');
Sequelize.useCLS(namespace);
Database Engine Support
We have updated our minimum supported database engine versions. Using older database engine will show SEQUELIZE0006
deprecation warning. Please check ENGINE.md for version table.
Sequelize
- Bluebird has been removed. Internally all methods are now using async/await. Public API now returns native promises. Thanks to Andy Edwards for this refactor work.
-
Sequelize.Promise
is no longer available. -
sequelize.import
method has been removed.
Model
options.returning
Option returning: true
will no longer return attributes that are not defined in the model. Old behavior can be achieved by using returning: ['*']
instead.
Model.changed()
This method now tests for equality with _.isEqual
and is now deep aware for JSON objects. Modifying a nested value for a JSON object won't mark it as changed (since it is still the same object).
const instance = await MyModel.findOne();
instance.myJsonField.someProperty = 12345; // Changed from something else to 12345
console.log(instance.changed()); // false
await instance.save(); // this will not save anything
instance.changed('myJsonField', true);
console.log(instance.changed()); // ['myJsonField']
await instance.save(); // will save
Model.bulkCreate()
This method now throws Sequelize.AggregateError
instead of Bluebird.AggregateError
. All errors are now exposed as errors
key.
QueryInterface
addConstraint
This method now only takes 2 parameters, tableName
and options
. Previously the second parameter could be a list of column names to apply the constraint to, this list must now be passed as options.fields
property.
Changelog
6.0.0-beta.6
- docs(add-constraint): options.fields support
- docs(association): document uniqueKey for belongs to many #12166
- docs(association): options.through.where support
- docs(association): use and instead of 'a nd' #12191
- docs(association): use correct scope name #12204
- docs(manuals): avoid duplicate header ids #12201
- docs(model): correct syntax error in example code #12137
- docs(query-interface): removeIndex indexNameOrAttributes #11947
- docs(resources): add sequelize-guard library #12235
- docs(typescript): fix confusing comments #12226
- docs(v6-guide): bluebird removal API changes
- docs: database version support info #12168
- docs: remove remaining bluebird references #12167
- feat(belongs-to-many): allow creation of paranoid join tables #12088
- feat(belongs-to-many): get/has/count for paranoid join table #12256
- feat(pool): expose maxUses pool config option #12101
- feat(postgres): minify include aliases over limit #11940
- feat(sequelize): handle query string host value #12041
- fix(associations): ensure correct schema on all generated attributes #12258
- fix(docs/instances): use correct variable for increment #12087
- fix(include): separate queries are not sub-queries #12144
- fix(model): fix unchained promise in association logic in bulkCreate #12163
- fix(model): updateOnDuplicate handles composite keys #11984
- fix(model.count): distinct without any column generates invalid SQL #11946
- fix(model.reload): ignore options.where and always use this.where() #12211
- fix(mssql) insert record failure because of BOOLEAN column type #12090
- fix(mssql): cast sql_variant in query generator #11994
- fix(mssql): dont use OUTPUT INSERTED for update without returning #12260
- fix(mssql): duplicate order in FETCH/NEXT queries #12257
- fix(mssql): set correct scale for float #11962
- fix(mssql): tedious v9 requires connect call #12182
- fix(mssql): use uppercase for engine table and columns #12212
- fix(pool): show deprecation when engine is not supported #12218
- fix(postgres): addColumn support ARRAY(ENUM) #12259
- fix(query): do not bind $ used within a whole-word #12250
- fix(query-generator): handle literal for substring based operators #12210
- fix(query-interface): allow passing null for query interface insert #11931
- fix(query-interface): allow sequelize.fn and sequelize.literal in fields of IndexesOptions #12224
- fix(scope): don't modify original scope definition #12207
- fix(sqlite): multiple primary keys results in syntax error #12237
- fix(sync): pass options to all query methods #12208
- fix(typings): add type_helpers to file list #12000
- fix(typings): correct Model.init return type #12148
- fix(typings): fn is assignable to where #12040
- fix(typings): getForeignKeysForTables argument definition #12084
- fix(typings): make between operator accept date ranges #12162
- refactor(ci): improve database wait script #12132
- refactor(tsd-test-setup): add & setup dtslint #11879
- refactor: move all dialect conditional logic into subclass #12217
- refactor: remove sequelize.import helper #12175
- refactor: use native versions #12159
- refactor: use object spread instead of Object.assign #12213
6.0.0-beta.5
- fix(find-all): throw on empty attributes #11867
- fix(types):
queryInterface.addIndex
#11844 - fix(types):
plain
option insequelize.query
#11596 - fix(types): correct overloaded method order #11727
- fix(types):
comparator
arg ofSequelize.where
#11843 - fix(types): fix BelongsToManyGetAssociationsMixinOptions #11818
- fix(types): adds
hooks
toCreateOptions
#11736 - fix(increment): broken queries #11852
- fix(associations): gets on many-to-many with non-primary target key #11778
- fix: properly select SRID if present #11763
- feat(sqlite): automatic path provision for
options.storage
#11853 - feat(postgres):
idle_in_transaction_session_timeout
connection option #11775 - feat(index): improve to support multiple fields with operator #11934
- docs(transactions): fix addIndex example and grammar #11759
- docs(raw-queries): remove outdated info #11833
- docs(optimistic-locking): fix missing manual #11850
- docs(model): findOne return value for empty result #11762
- docs(model-querying-basics.md): add some commas #11891
- docs(manuals): fix missing models-definition page #11838
- docs(manuals): extensive rewrite #11825
- docs(dialect-specific): add MSSQL domain auth example #11799
- docs(associations): fix typos in assocs manual #11888
- docs(associations): fix typo #11869
6.0.0-beta.4
- feat(sync): allow to bypass drop statements when sync with alter enabled #11708
- fix(model): injectDependentVirtualAttrs on included models #11713
- fix(model): generate ON CONFLICT ... DO UPDATE correctly #11666
- fix(mssql): optimize formatError RegEx #11725
- fix(types): add getForeignKeyReferencesForTable type #11738
- fix(types): add 'restore' hooks to types #11730
- fix(types): added 'fieldMaps' to QueryOptions typings #11702
- fix(types): add isSoftDeleted to Model #11628
- fix(types): fix upsert typing #11674
- fix(types): specified 'this' for getters and setters in fields #11648
- fix(types): add paranoid to UpdateOptions interface #11647
- fix(types): include 'as' in IncludeThroughOptions definition #11624
- fix(types): add Includeable to IncludeOptions.include type #11622
- fix(types): transaction lock #11620
- fix(sequelize.fn): escape dollarsign (#11533) #11606
- fix(types): add nested to Includeable #11354
- fix(types): add date to where #11612
- fix(types): add getDatabaseName (#11431) #11614
- fix(types): beforeDestroy #11618
- fix(types): query-interface table schema #11582
- docs: README.md #11698
- docs(sequelize): detail options.retry usage #11643
- docs: clarify logging option in Sequelize constructor #11653
- docs(migrations): fix syntax error in example #11626
- docs: describe logging option #11654
- docs(transaction): fix typo #11659
- docs(hooks): add info about belongs-to-many #11601
- docs(associations): fix typo #11592
6.0.0-beta.3
- feat: support cls-hooked / tests #11584