powershell - 通过 REST 将新文档存储到 RavenDB 中的特定集合

标签 powershell ravendb ravendb-http

我正在从 PowerShell 脚本将文档上传到 RavenDB。在这里:

$Timestamp = (Get-Date).ToBinary()
$Url = "http://127.0.0.1:8080/databases/DiskStat/docs"

$diskObject = New-Object PSObject @{
    "@metadata" = New-Object psobject @{
        "Raven-Entity-Name" = "Entries"
    }
    Timestamp = $Timestamp
    Computer = $comp
    Disk = $disk.DeviceID
    Size = $disk.Size
    Free = $disk.FreeSpace
}
[string]$diskJson = (ConvertTo-Json $diskObject)
Invoke-RestMethod -Uri $Url -Method Put -Body $diskJson | Out-Null

问题新文档不属于任何集合@metadata被忽略。文档在数据库中看起来像这样:

{
  "Size": 52427931648,
  "Timestamp": -8588258377456088029,
  "Computer": "710H0001",
  "Free": 27922563072,
  "Disk": "C:",
  "@metadata": {
    "@id": "423b5bdf-fe59-4530-8047-bc48d98ee363",
    "Last-Modified": "2013-08-06T06:05:42.6982277Z",
    "@etag": "00000001-0000-a900-0000-000000000001",
    "Non-Authoritative-Information": false
  }
}

所以我必须不时地修补它以分配Raven-Entity-Name。很酷的 RavenDB 伙计们,请帮帮我

最佳答案

虽然元数据在 @metadata 部分返回,但这不是您发送它的方式。那是因为您无法控制每个元数据值。例如,传递一个 etag 是没有意义的。

相反,对于您可以控制的元数据值,将它们发送到 HTTP header 中。

$headers = @{"Raven-Entity-Name"="Entries"}
Invoke-RestMethod -Headers $headers  ...

关于powershell - 通过 REST 将新文档存储到 RavenDB 中的特定集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18103496/

相关文章:

excel - 我希望从 Powershell 更改 Excel 中的数据。

.net - 在 PS 类中引用程序集会导致 "Unable to find type"错误

ravendb - 将 NServiceBus 安装为依赖 RavenDb 的 Windows 服务

ravendb - 获取修订的总结果(RavenDB 客户端 API)

ravendb - 如何在 ravendb 3.5 中查找附件?

c# - 如何重定向 Powershell 的输出

azure - 使用其他属性获取扩展属性

permissions - 如何授予客户端用户不能删除、只能修改的文档权限?

c# - 无法使用嵌入式 Db 访问 RavenDB Management Studio