clarkie / dynogels

DynamoDB data mapper for node.js. Originally forked from https://github.com/ryanfitz/vogels
Other
490 stars 110 forks source link

Uncaught exception at with Table.prototype.create #153

Closed digvijayy closed 6 years ago

digvijayy commented 6 years ago

First. Thank you for making such a great product. I am having an issue where Table.prototype.create is throwing an uncaught exception after throwing a schema failure. The second error is crashing my nodejs server and I am not sure how to catch it. It seems that dynogels continues to process even after the schema failure has happened.

Schema Error - no issues 2018-05-25 18:02:12.553Z - error: message :child "s1_uid" fails because ["s1_uid" is required] on v3.Service1S, originalUrl :/services/v1/business/s1s, type :system, status :500, stack: ValidationError: child "s1_uid" fails because ["s1_uid" is required] on v3.Service1S at Object.exports.process (C:\scrapjet\scrapjet_basev2\node_modules\joi\lib\errors.js:196:19) at _validateWithOptions (C:\scrapjet\scrapjet_basev2\node_modules\joi\lib\types\any\index.js:670:31) at root.validate (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\joi\lib\index.js:139:23) at Schema.validate (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\lib\schema.js:188:14) at internals.callBeforeHooks (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\lib\table.js:158:32) at C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\async\dist\async.js:421:16 at next (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\async\dist\async.js:5302:29) at C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\async\dist\async.js:906:16 at start (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\lib\table.js:150:12) at nextTask (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\async\dist\async.js:5297:14) C:\scrapjet\scrapjet_basev2\node_modules\step\lib\step.js:39 throw arguments[0]; ^ 2nd Error ----Uncaught exception. ValidationException: Invalid KeyConditionExpression: An expression attribute value used in expression is not defined; attribute value: :s1_uid at Request.extractError (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\aws-sdk\lib\protocol\json.js:48:27) at Request.callListeners (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\aws-sdk\lib\sequential_executor.js:105:20) at Request.emit (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\aws-sdk\lib\sequential_executor.js:77:10) at Request.emit (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\aws-sdk\lib\request.js:683:14) at Request.transition (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\aws-sdk\lib\request.js:22:10) at AcceptorStateMachine.runTo (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\aws-sdk\lib\state_machine.js:14:12) at C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\aws-sdk\lib\state_machine.js:26:10 at Request. (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\aws-sdk\lib\request.js:38:9) at Request. (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\aws-sdk\lib\request.js:685:12) at Request.callListeners (C:\scrapjet\scrapjet_basev2\node_modules\dynogels\node_modules\aws-sdk\lib\sequential_executor.js:115:18)

digvijayy commented 6 years ago

Apologies. After breaking my head for the whole day I found out that it was a bug in my code. I was calling 2 asynchronous methods in series. Both of which were resulting in an error. One of them was getting caught and the other was crashing the server. So like this.

                this(null, data);
                s1shelper.getS1SWithEmail(data.s1_uid, data.email, this);