Могу ли я отправить несколько запросов на исправление к конечной точке HTTP API RavenDB /bulk_docs?

Я нахожусь в процессе написания обёртки узла для RavenDB.

Я использую версию 3, но, поскольку для нее нет документов HTTP, я полагаюсь на документы 2.0 и 2.5.

Что касается операций с одним документом, я успешно использовал эту страницу документа для PUT, DELETE и нескольких PATCH для отдельных документов.

Точно так же я успешно использовал эту страницу документации для нескольких PUT и DELETE для нескольких документов в одном HTTP-вызове, но документы немного расплывчаты в отношении PATCHing нескольких документов в одном вызове.

Под заголовком "Пакетные запросы" четко указано, что это возможно:

Пакетирование запросов в RavenDB обрабатывается с использованием конечной точки '/bulk_docs', которая принимает массив операций для выполнения. Формат для операций:

метод - PUT, PATCH или DELETE.

...

Для PUT я отправляю в /bulk_docs:

[
  {
    Method: 'PUT',
    Key: 'users/1',
    Document: { username: 'dummy' }
    Metadata: { 'Raven-Entity-Type': 'Users' }
  },
  ...
]

Для УДАЛЕНИЯ я ПОСТУПАЮ к /bulk_docs:

[
  {
    Method: 'DELETE',
    Key: 'users/1'
  },
  ...
]

Для патчей я попытался разместить следующее без какой-либо удачи:

[
  {
    Method: 'PATCH',
    Key: 'users/1',
    Document: {
      Type: 'Set',
      Name:'username',
      Value: 'new-username'
    }
  },
  ...
]

а также

[
  {
    Method: 'PATCH',
    Key: 'users/1',
    Type: 'Set',
    Name:'username',
    Value: 'new-username'
  },
  ...
]

Все, что я вернусь, это 500 - Internal Server Error и без каких-либо примеров ПАТЧИРОВКИ нескольких документов на этой странице документов я застрял...

Любая помощь будет оценена:)

1 ответ

Решение

Структура для PATCH:

[
  {
    Method: 'PATCH',
    Key: 'users/1',
    Patches: [{
Type: 'Set',
        Name:'username',
        Value: 'new-username'
}]
  },
  ...
]

Полную структуру можно увидеть здесь: https://github.com/ayende/ravendb/blob/master/Raven.Abstractions/Commands/PatchCommandData.cs#L72

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