Сохранять новый документ в определенную коллекцию в RavenDB через REST
Я загружаю документы в RavenDB из скрипта PowerShell. Вот:
$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, пожалуйста, помогите мне
1 ответ
Решение
В то время как метаданные возвращаются в @metadata
раздел, это не то, как вы отправляете его. Это потому, что вы не можете контролировать каждое значение метаданных. Например, переход в этаг не имеет смысла.
Вместо этого, для значений метаданных, которыми вы можете управлять, отправляйте их в заголовках HTTP.
$headers = @{"Raven-Entity-Name"="Entries"}
Invoke-RestMethod -Headers $headers ...