Сохранять новый документ в определенную коллекцию в 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  ...
Другие вопросы по тегам