Обновите документ и получите все его поля в 1 запросе

У меня есть идентификатор документа, и я хотел бы получить все его поля при обновлении некоторых из них в одном запросе, необязательно в качестве атомарной операции.

Я попробовал следующее:

myTable.get(id).update(someFields, {returnChanges: true})

... но он дает мне документ, только если он был изменен. Я хочу получить документ события, когда обновление не изменило ни одного поля.

В качестве временного решения tmp я в настоящее время использую два последовательных запроса: обновление, затем получение.

1 ответ

Решение

Я нашел решение:

myTable
  .get(id)
  .update(someFields, {returnChanges: 'always'})
  ('changes')(0)('new_val')

{returnChanges: 'always'} говорит БД всегда возвращать пару new_val / old_val даже когда они одинаковы.

Важное примечание: использование {returnChanges: 'always'} будет иметь побочный эффект не выбрасывать исключение, если документ не найден. Вместо этого он вернется null для обоих new_val а также old_val, Не полагайтесь на исключение в этом случае.

Другие вопросы по тегам