Unhandled exception for mySQL database
gjtorikian opened this issue · comments
I'm not really sure how to resolve this:
sql2graphql --database project_development --output-dir=.
Unhandled rejection TypeError: Cannot read property 'originalName' of undefined
at generateListReferenceField (/usr/local/lib/node_modules/sql-to-graphql/steps/generate-types.js:154:105)
at /usr/local/lib/node_modules/sql-to-graphql/steps/generate-types.js:59:25
at Array.forEach (native)
at generateType (/usr/local/lib/node_modules/sql-to-graphql/steps/generate-types.js:58:30)
at Object.generateTypes (/usr/local/lib/node_modules/sql-to-graphql/steps/generate-types.js:32:27)
at /usr/local/lib/node_modules/sql-to-graphql/cli.js:144:28
at /usr/local/lib/node_modules/sql-to-graphql/node_modules/async/lib/async.js:726:13
at /usr/local/lib/node_modules/sql-to-graphql/node_modules/async/lib/async.js:52:16
at done (/usr/local/lib/node_modules/sql-to-graphql/node_modules/async/lib/async.js:246:17)
at /usr/local/lib/node_modules/sql-to-graphql/node_modules/async/lib/async.js:44:16
at /usr/local/lib/node_modules/sql-to-graphql/node_modules/async/lib/async.js:723:17
at /usr/local/lib/node_modules/sql-to-graphql/node_modules/async/lib/async.js:167:37
at /usr/local/lib/node_modules/sql-to-graphql/node_modules/lodash/function/after.js:43:19
at /usr/local/lib/node_modules/sql-to-graphql/steps/find-one-to-many-rels.js:56:13
at /usr/local/lib/node_modules/sql-to-graphql/backends/mysql.js:89:21
at tryCatcher (/usr/local/lib/node_modules/sql-to-graphql/node_modules/bluebird/js/main/util.js:26:23)
The database user is root
and there is no password.
Effectively, one of my tables did not have a PRIMARY KEY
set. Here's a diff of a hack I did to work around it:
+ var fields = find(reference.model.fields, { isPrimaryKey: true })
+ var resolver;
+
+ if (fields === undefined) {
+ console.warn('could not find primary key on :');
+ console.warn(reference.model);
+ resolver = null;
+ } else {
+ resolver = fields.originalName;
+ }
return generateField({
name: reference.field,
description: reference.description || opts.defaultDescription + ' (reference)',
- resolve: buildResolver(reference.model, find(reference.model.fields, { isPrimaryKey: true }).originalName),
+ resolve: buildResolver(reference.model, find(reference.model.fields).originalName),