RavenDb HTTP补丁

RavenDb HTTP补丁,ravendb,Ravendb,尝试在RavenDb中修补文档 $a = array('Patches' => array('pref_roles' => "1,2,3"), 'Key' => "Users/".$user_id, 'Method' => 'Patch' ); {“补丁”:{“pref_角色”:“1,2,3”},“键”:“用户/4”,“方法”:“补丁”} 这个补丁永远无法通过。我哪里做错

尝试在RavenDb中修补文档

$a = array('Patches' => array('pref_roles' => "1,2,3"),
                 'Key' => "Users/".$user_id,
                 'Method' => 'Patch'                
);
{“补丁”:{“pref_角色”:“1,2,3”},“键”:“用户/4”,“方法”:“补丁”}

这个补丁永远无法通过。我哪里做错了

编辑

在“脚本”中添加

$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()
)
数组
(
[Url]=>/databases/om/bulk\u docs
[错误]=>系统。异常:从JsonReader读取RavenJArray时出错。当前JsonReader项不是数组:StartObject
位于Raven.Json.Linq.ravenjaray.Load(JsonReader)
在Raven.Database.Server.Controllers.RavenBaseApiController.d_u11.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在Raven.Database.Server.Controllers.DocumentsBatchController.d_u8.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Threading.Tasks.TaskHelperExtensions.d_u3`1.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Web.Http.Controllers.ApiControllerActionInvoker.d_u0.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Web.Http.Controllers.ActionFilterResult.d_u2.MoveNext()中
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Web.Http.Controllers.ExceptionFilterResult.d_u0.MoveNext()中
)

玩了一会儿,看看我是否能找到有效的解决方案,但这并没有真正起作用。

以这种方式修补命令数据需要传递实际操作。 见:

我建议您使用脚本补丁,使用EVAL

$a = array('Patch' => ('Script' => "this.pref_roles = [1,2,3["),
                 'Key' => "Users/".$user_id,
                 'Method' => 'Patch'                
);
$a = array('Patch' => ('Script' => "this.pref_roles = [1,2,3["),
                 'Key' => "Users/".$user_id,
                 'Method' => 'Patch'                
);