File tree Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Original file line number Diff line number Diff line change @@ -200,6 +200,7 @@ export class MongoError extends Error {
200
200
* @category Error
201
201
*/
202
202
export class MongoServerError extends MongoError {
203
+ errorResponse ?: ErrorDescription ;
203
204
codeName ?: string ;
204
205
writeConcernError ?: Document ;
205
206
errInfo ?: Document ;
@@ -223,9 +224,17 @@ export class MongoServerError extends MongoError {
223
224
this [ kErrorLabels ] = new Set ( message . errorLabels ) ;
224
225
}
225
226
227
+ this . errorResponse = message ;
228
+
226
229
for ( const name in message ) {
227
- if ( name !== 'errorLabels' && name !== 'errmsg' && name !== 'message' )
230
+ if (
231
+ name !== 'errorLabels' &&
232
+ name !== 'errmsg' &&
233
+ name !== 'message' &&
234
+ name !== 'errorResponse'
235
+ ) {
228
236
this [ name ] = message [ name ] ;
237
+ }
229
238
}
230
239
}
231
240
Original file line number Diff line number Diff line change @@ -113,6 +113,24 @@ describe('MongoErrors', () => {
113
113
expect ( err . message ) . to . equal ( errorMessage ) ;
114
114
expect ( err . someData ) . to . equal ( 12345 ) ;
115
115
} ) ;
116
+ context ( 'errorResponse property' , function ( ) {
117
+ it ( `should set errorResponse to raw results document passed in` , function ( ) {
118
+ const errorDoc = { message : 'A test error' , someData : 12345 } ;
119
+ const err = new MongoServerError ( errorDoc ) ;
120
+ expect ( err ) . to . be . an . instanceof ( Error ) ;
121
+ expect ( err . errorResponse ) . to . deep . equal ( errorDoc ) ;
122
+ } ) ;
123
+ it ( `should not construct enumerated key 'errorResponse' if present` , function ( ) {
124
+ const errorDoc = {
125
+ message : 'A test error' ,
126
+ errorResponse : 'I will not be an enumerated key'
127
+ } ;
128
+ const err = new MongoServerError ( errorDoc ) ;
129
+ expect ( err ) . to . be . an . instanceof ( Error ) ;
130
+ expect ( err . errorResponse ) . to . deep . equal ( errorDoc ) ;
131
+ expect ( err . errorResponse ?. errorResponse ) . to . deep . equal ( 'I will not be an enumerated key' ) ;
132
+ } ) ;
133
+ } ) ;
116
134
} ) ;
117
135
118
136
describe ( 'MongoNetworkError#constructor' , ( ) => {
You can’t perform that action at this time.
0 commit comments