Могу ли я отправить несколько запросов на исправление к конечной точке 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