У меня есть такой код
let item = { name: 'Roger' }
try {
return await collection.save(item)
}
catch (err) {
}
Теперь коллекция, в которую я сохраняю, имеет уникальный индекс в поле с именем name
. Теперь во время обработки исключений объект err
будет выглядеть примерно так
{
"isArangoError": true,
"response": {
"_readableState": {
"objectMode": false,
"highWaterMark": 16384,
"buffer": {
"head": null,
"tail": null,
"length": 0
},
"length": 0,
"pipes": [
],
"flowing": true,
"ended": true,
"endEmitted": true,
"reading": false,
"sync": true,
"needReadable": false,
"emittedReadable": false,
"readableListening": false,
"resumeScheduled": false,
"paused": false,
"errorEmitted": false,
"emitClose": true,
"autoDestroy": false,
"destroyed": false,
"defaultEncoding": "utf8",
"awaitDrainWriters": null,
"multiAwaitDrain": false,
"readingMore": true,
"decoder": null,
"encoding": null
},
"body": {
"code": 409,
"error": true,
"errorMessage": "unique constraint violated - in index name_is_unique of type persistent over 'name'; conflicting key: 15816187",
"errorNum": 1210
},
"arangojsHostId": 0
},
"statusCode": 409,
"errorNum": 1210,
"code": 409
}
Хотя сообщение об ошибке действительно полезно для передачи того, что name
должно быть уникальным, wi sh имеет атрибут / поле в объекте ошибки, чтобы получить конфликтующее имя поля.
Как получить имя поля, отличное от разбора регулярных выражений, из сообщения об ошибке?