我正在从 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/