Пытаясь исправить документы в RavenDbRavenDb HTTP Заделка
$a = array('Patches' => array('pref_roles' => "1,2,3"),
'Key' => "Users/".$user_id,
'Method' => 'Patch'
);
{ "Патчи": { "pref_roles": "1,2,3"}, "Key": "Пользователи/4", "Метод ":" Патч "}
$input = json_encode($input);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $input,
CURLOPT_URL => 'http://localhost:8080/databases/om/bulk_docs'
));
$resp = curl_exec($curl);
Патч никогда не проходит. Где я иду не так?
Редактировать.
Добавлен в 'сценарии'
$a = array('Patch' => array('Script' => 'this.natio = '.$natio.''),
'Key' => 'Users/'.$user_id,
'Method' => 'Patch');
Я отправляю
CURLOPT_CUSTOMREQUEST => 'POST',
к этому URL:
CURLOPT_URL => 'http://localhost:8080/databases/om/bulk_docs'
С помощью этих сообщений об ошибке:
Array
(
[Url] => /databases/om/bulk_docs
[Error] => System.Exception: Error reading RavenJArray from JsonReader. Current JsonReader item is not an array: StartObject
at Raven.Json.Linq.RavenJArray.Load(JsonReader reader)
at Raven.Database.Server.Controllers.RavenBaseApiController.<ReadJsonArrayAsync>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Raven.Database.Server.Controllers.DocumentsBatchController.<BulkPost>d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__3`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext()
)
Играли немного, чтобы посмотреть, смогу ли я найти рабочее решение, но это не получилось.