TimelordUK / node-sqlserver-v8

branched from node-sqlserver, SQL server driver compatible with all versions of Node
Other
139 stars 43 forks source link

Sequelize example does not work #109

Closed geordankeller closed 4 years ago

geordankeller commented 5 years ago

Attempting to run the Sequelize example code with trusted security/integrated authentication/Windows auth yields the following:

PS C:\app> node .\example.js Executing (default): IF OBJECT_ID('[users]', 'U') IS NOT NULL DROP TABLE [users]; Executing (default): IF OBJECT_ID('[users]', 'U') IS NULL CREATE TABLE [users] ([id] INTEGER NOT NULL IDENTITY(1,1) , [username] NVARCHAR(255) NULL, [job] NVARCHAR(255) NULL, [createdAt] DATETIMEOFFSET NOT NULL, [updatedAt] DATETIMEOFFSET NOT NULL, PRIMARY KEY ([id])); Executing (default): EXEC sys.sp_helpindex @objname = N'[users]'; Executing (default): INSERT INTO [users] ([username],[job],[createdAt],[updatedAt]) OUTPUT INSERTED.* VALUES (@0,@1,@2,@3); Executing (default): INSERT INTO [users] ([username],[job],[createdAt],[updatedAt]) OUTPUT INSERTED.* VALUES (@0,@1,@2,@3); (node:2656) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'VarChar' of undefined at Query.getSQLTypeFromJsType (C:\app\node_modules\sequelize\lib\dialects\mssql\query.js:18:37) at _.forOwn (C:\app\node_modules\sequelize\lib\dialects\mssql\query.js:81:34) at C:\app\node_modules\lodash\lodash.js:4905:15 at baseForOwn (C:\app\node_modules\lodash\lodash.js:2990:24) at Function.forOwn (C:\app\node_modules\lodash\lodash.js:13014:24) at Promise (C:\app\node_modules\sequelize\lib\dialects\mssql\query.js:80:11) at Promise._execute (C:\app\node_modules\bluebird\js\release\debuggability.js:313:9) at Promise._resolveFromExecutor (C:\app\node_modules\bluebird\js\release\promise.js:488:18) at new Promise (C:\app\node_modules\bluebird\js\release\promise.js:79:10) at Query._run (C:\app\node_modules\sequelize\lib\dialects\mssql\query.js:45:12) at Promise.using.connection (C:\app\node_modules\sequelize\lib\dialects\mssql\query.js:107:69) at tryCatcher (C:\app\node_modules\bluebird\js\release\util.js:16:23) at C:\app\node_modules\bluebird\js\release\using.js:185:26 at tryCatcher (C:\app\node_modules\bluebird\js\release\util.js:16:23) at Promise._settlePromiseFromHandler (C:\app\node_modules\bluebird\js\release\promise.js:517:31) at Promise._settlePromise (C:\app\node_modules\bluebird\js\release\promise.js:574:18) at Promise._settlePromise0 (C:\app\node_modules\bluebird\js\release\promise.js:619:10) at Promise._settlePromises (C:\app\node_modules\bluebird\js\release\promise.js:699:18) at Promise._fulfill (C:\app\node_modules\bluebird\js\release\promise.js:643:18) at PromiseArray._resolve (C:\app\node_modules\bluebird\js\release\promise_array.js:126:19) at PromiseArray._promiseFulfilled (C:\app\node_modules\bluebird\js\release\promise_array.js:144:14) at Promise._settlePromise (C:\app\node_modules\bluebird\js\release\promise.js:579:26) (node:2656) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:2656) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. Executing (default): INSERT INTO [users] ([username],[job],[createdAt],[updatedAt]) OUTPUT INSERTED.* VALUES (@0,@1,@2,@3); Executing (default): SELECT [id], [username], [job], [createdAt], [updatedAt] FROM [users] AS [user] WHERE [user].[id] = 3; null Executing (default): SELECT [id], [username], [job], [createdAt], [updatedAt] FROM [users] AS [user] WHERE [user].[job] = N'Agile Leader' ORDER BY [user].[id] OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY; null Executing (default): SELECT [id], [username], [job], [createdAt], [updatedAt] FROM [users] AS [user]; [] Executing (default): SELECT count(*) AS [count] FROM [users] AS [user] WHERE [user].[job] LIKE N'%Programmer'; Executing (default): SELECT [id], [username], [job], [createdAt], [updatedAt] FROM [users] AS [user] WHERE [user].[job] LIKE N'%Programmer' ORDER BY [user].[id] OFFSET 0 ROWS FETCH NEXT 2 ROWS ONLY; 0 []

TimelordUK commented 5 years ago

hello

sorry, msnodesqlv8 only works with sequelize 4.44.2 currently, the package.json has been incorrectly upgraded to latest version. I will check in the resolved package, please try with this version

"C:\Program Files\nodejs\node.exe" C:\Users\dev\js\sql\node_modules\msnodesqlv8\samples\javascript\sequelize.js Sat, 10 Aug 2019 18:42:55 GMT sequelize deprecated String based operators are now deprecated. Please use Symbol based operators for better security, read more at http://docs.sequelizejs.com/manual/tutorial/querying.html#operators at node_modules\sequelize\lib\sequelize.js:245:13 Executing (default): IF OBJECT_ID('[users]', 'U') IS NOT NULL DROP TABLE [users]; Executing (default): IF OBJECT_ID('[users]', 'U') IS NULL CREATE TABLE [users] ([id] INTEGER NOT NULL IDENTITY(1,1) , [username] NVARCHAR(255) NULL, [job] NVARCHAR(255) NULL, [createdAt] DATETIMEOFFSET NOT NULL, [updatedAt] DATETIMEOFFSET NOT NULL, PRIMARY KEY ([id])); Executing (default): EXEC sys.sp_helpindex @objname = N'[users]'; Executing (default): INSERT INTO [users] ([username],[job],[createdAt],[updatedAt]) OUTPUT INSERTED. VALUES (N'techno01',N'Programmer',N'2019-08-10 18:42:55.839 +00:00',N'2019-08-10 18:42:55.839 +00:00'); Executing (default): INSERT INTO [users] ([username],[job],[createdAt],[updatedAt]) OUTPUT INSERTED. VALUES (N'techno02',N'Head Programmer',N'2019-08-10 18:42:55.840 +00:00',N'2019-08-10 18:42:55.840 +00:00'); Executing (default): INSERT INTO [users] ([username],[job],[createdAt],[updatedAt]) OUTPUT INSERTED. VALUES (N'techno03',N'Agile Leader',N'2019-08-10 18:42:55.840 +00:00',N'2019-08-10 18:42:55.840 +00:00'); Executing (default): SELECT [id], [username], [job], [createdAt], [updatedAt] FROM [users] AS [user] WHERE [user].[id] = 3; { "id": 3, "username": "techno03", "job": "Agile Leader", "createdAt": "2019-08-10T18:42:55.840Z", "updatedAt": "2019-08-10T18:42:55.840Z" } Executing (default): SELECT [id], [username], [job], [createdAt], [updatedAt] FROM [users] AS [user] WHERE [user].[job] = N'Agile Leader' ORDER BY [user].[id] OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY; { "id": 3, "username": "techno03", "job": "Agile Leader", "createdAt": "2019-08-10T18:42:55.840Z", "updatedAt": "2019-08-10T18:42:55.840Z" } Executing (default): SELECT [id], [username], [job], [createdAt], [updatedAt] FROM [users] AS [user]; [ { "id": 1, "username": "techno01", "job": "Programmer", "createdAt": "2019-08-10T18:42:55.839Z", "updatedAt": "2019-08-10T18:42:55.839Z" }, { "id": 2, "username": "techno02", "job": "Head Programmer", "createdAt": "2019-08-10T18:42:55.840Z", "updatedAt": "2019-08-10T18:42:55.840Z" }, { "id": 3, "username": "techno03", "job": "Agile Leader", "createdAt": "2019-08-10T18:42:55.840Z", "updatedAt": "2019-08-10T18:42:55.840Z" } ] Executing (default): SELECT count() AS [count] FROM [users] AS [user] WHERE [user].[job] LIKE N'%Programmer'; Executing (default): SELECT [id], [username], [job], [createdAt], [updatedAt] FROM [users] AS [user] WHERE [user].[job] LIKE N'%Programmer' ORDER BY [user].[id] OFFSET 0 ROWS FETCH NEXT 2 ROWS ONLY; 2 [ { id: 1, username: 'techno01', job: 'Programmer', createdAt: { 2019-08-10T18:42:55.839Z nanosecondsDelta: 0 }, updatedAt: { 2019-08-10T18:42:55.839Z nanosecondsDelta: 0 } }, { id: 2, username: 'techno02', job: 'Head Programmer', createdAt: { 2019-08-10T18:42:55.840Z nanosecondsDelta: 0 }, updatedAt: { 2019-08-10T18:42:55.840Z nanosecondsDelta: 0 } } ] done

Process finished with exit code 0

TimelordUK commented 4 years ago

this is now resolved, I will look at getting sequelize v5 working.

pellejacobs commented 4 years ago

@TimelordUK I've got most of sequelize v5 working in our environment. It's probably not perfect, but it does the job. Let me know if you want me to submit a PR.

TimelordUK commented 4 years ago

This would be very much appreciated. Thanks for contribution

Sent from my iPad

On 25 Oct 2019, at 18:17, Pelle Jacobs notifications@github.com wrote:

 @TimelordUK I've got most of sequelize v5 working in our environment. It's probably not perfect, but it does the job. Let me know if you want me to submit a PR.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.