我可以将多个补丁请求发布到RavenDB&bulk_docs HTTP API端点吗?

时间:2015-04-24 22:00:56

标签: ravendb ravendb-http

我正在为RavenDB编写节点包装器。

我使用的是版本3,但因为没有HTTP文档,我一直依赖于2.0和2.5文档。

关于单个文档操作,我已成功使用this doc page用于PUT,DELETE和多个PATCH到单个文档。

同样地,我在一次HTTP调用中成功地使用this doc page多个PUT和几个文档的DELETE,但是在一次调用中对多个文档进行PATCH处理时,文档有点模糊

根据"批处理请求"标题,它清楚地说明了它的可能性:

  

使用' / bulk_docs'处理RavenDB中的请求批处理。 endpoint,接受要执行的操作数组。操作的格式是:

     

方法 - PUT,PATCH或DELETE。

     

...

对于PUT,我发布到/ bulk_docs:

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

对于DELETE,我发布到/ bulk_docs:

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

对于PATCH,我试过没有任何运气就发布了以下内容:

[
  {
    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 个答案:

答案 0 :(得分:0)

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