mweibel / connect-session-sequelize

Sequelize SessionStore for Express/Connect

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Sequelize update makes connect-session-sequelize crash

mikkelramlov opened this issue · comments

In connect-session-sequelize.js in the lib folder, this line makes Sequelize throw an error:
return this.sessionModel.destroy({where: {'expires': {lt: new Date()}}}).asCallback(fn)

It is the lt part. Sequelize is no longer support a string as operator. They now require that one uses the require('sequelize').Op object, which contains the Op.lt operator.

This is extra critical if you set operatorsAliases: false, which is now recommended.

This is the crash report:
Executing (default): UPDATE SessionsSETexpires='2017-10-11 17:35:59',updatedAt='2017-10-10 17:35:59' WHERE sid = 'E9_Ga5dO3nQ_DWBogYjS7mrtRZaCldLe' Unhandled rejection Error: Invalid value [object Object] at Object.escape (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/sql-string.js:50:11) at Object.escape (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/abstract/query-generator.js:919:22) at Object._whereParseSingleValueObject (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/abstract/query-generator.js:2373:41) at Object.whereItemQuery (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/abstract/query-generator.js:2078:21) at Utils.getComplexKeys.forEach.prop (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1939:25) at Array.forEach (native) at Object.whereItemsQuery (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1937:35) at Object.getWhereConditions (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/abstract/query-generator.js:2400:19) at Object.deleteQuery (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/mysql/query-generator.js:181:18) at QueryInterface.bulkDelete (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/query-interface.js:1004:37) at Promise.try.then.then (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/model.js:2499:36) at tryCatcher (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/util.js:16:23) at Promise._settlePromiseFromHandler (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/promise.js:512:31) at Promise._settlePromise (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/promise.js:569:18) at Promise._settlePromise0 (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/promise.js:614:10) at Promise._settlePromises (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/promise.js:693:18) at Async._drainQueue (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/async.js:133:16) at Async._drainQueues (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/async.js:143:10) at Immediate.Async.drainQueues (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/async.js:17:14) at runCallback (timers.js:781:20) at tryOnImmediate (timers.js:743:5) at processImmediate [as _immediateCallback] (timers.js:714:5) Unhandled rejection Error: Invalid value [object Object] at Object.escape (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/sql-string.js:50:11) at Object.escape (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/abstract/query-generator.js:919:22) at Object._whereParseSingleValueObject (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/abstract/query-generator.js:2373:41) at Object.whereItemQuery (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/abstract/query-generator.js:2078:21) at Utils.getComplexKeys.forEach.prop (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1939:25) at Array.forEach (native) at Object.whereItemsQuery (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/abstract/query-generator.js:1937:35) at Object.getWhereConditions (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/abstract/query-generator.js:2400:19) at Object.deleteQuery (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/dialects/mysql/query-generator.js:181:18) at QueryInterface.bulkDelete (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/query-interface.js:1004:37) at Promise.try.then.then (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/sequelize/lib/model.js:2499:36) at tryCatcher (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/util.js:16:23) at Promise._settlePromiseFromHandler (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/promise.js:512:31) at Promise._settlePromise (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/promise.js:569:18) at Promise._settlePromise0 (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/promise.js:614:10) at Promise._settlePromises (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/promise.js:693:18) at Async._drainQueue (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/async.js:133:16) at Async._drainQueues (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/async.js:143:10) at Immediate.Async.drainQueues (/Users/mikkelramlov/Development/mit-pizzaria/api/node_modules/bluebird/js/release/async.js:17:14) at runCallback (timers.js:781:20) at tryOnImmediate (timers.js:743:5) at processImmediate [as _immediateCallback] (timers.js:714:5)

as you've seemingly already figured out how to fix it, can you make a pull request fixing it?

I have just made a pull request ever to fix the error, but please bear with me if something seems odd, it's my first pull request.

I forgot to thank you for sharing this great module. It does exactly what it promises! 👍 :) THANKS!

Just ran into this issue, I checked out your pull request, hope it gets accepted.
It can also be solved this way by setting the alias for lt only:
new Sequelize(dburl, { operatorsAliases: { lt: Sequelize.Op.lt } })
Just be sure not to use the string based operator anywhere else in your code!

Exactly! It has to be done everywhere. :)

Fixed with #59 and that's published on NPM as version 5.0.0.