Определение того, какое уникальное ограничение вызвало сбой INSERT в ArangoDB

У меня есть коллекция документов в ArangoDB, которая имеет несколько уникальных индексов. При вставке нового документа вставка может завершиться неудачей из-за какого-либо уникального индекса. Есть ли способ легко выяснить, какие поля в документе вызвали ошибку при вставке?

Например, возьмем коллекцию, в которой хранятся пользовательские данные. Уникальные индексы в полях "username" и "email" означают, что вставка может завершиться неудачно, если любое из этих полей будет дублировано.

Сообщения об ошибках не являются конкретными:

{ 
    error: true,
    errorMessage: 'unique constraint violated (while executing)',
    code: 409,
    errorNum: 1210
}

Долгое время было бы вводить / обновлять эти уникальные поля отдельно, чтобы точно знать, какое поле нарушило ограничение уникальности. Или попробуйте получить документы, которые соответствуют нашим входным значениям, чтобы определить, не произошло ли столкновения, прежде чем пытаться вставить. Я просто чувствую, что должен быть более простой способ.

Есть ли способ вернуть имя поля вместе с ошибкой? Или я подхожу к проблеме с совершенно неправильной точки зрения?

Буду очень признателен за любые мысли или предложения. Благодарю.

1 ответ

Извините, в настоящее время нет разумного способа добиться этого. Единственный способ справиться с этим сегодня - это сделать последующий выбор с помощью FILTER к значениям, которые вы пытались вставить:

FOR doc IN collection
  FILTER doc.firstindexed = 'firstvalue'
      OR doc.secondindexed = 'secondvalue'
    RETURN doc
Другие вопросы по тегам