Как получить конфликтующее имя поля ArangoDB - PullRequest
1 голос
/ 08 января 2020

У меня есть такой код

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 имеет атрибут / поле в объекте ошибки, чтобы получить конфликтующее имя поля.

Как получить имя поля, отличное от разбора регулярных выражений, из сообщения об ошибке?

...