Mongoose и массив ссылок UUID не конвертирует - PullRequest
0 голосов
/ 07 июня 2019

При использовании библиотеки mongoose-uuid я могу настроить типы UUID для своих схем, поэтому, когда я читаю данные, они представлены в строковом формате (utf-8), а когда я сохраняю данные в UUID, ObjectID BSON Тип 4 формат. Это прекрасно работает с верхними уровнями или плоскими прямыми значениями и определениями ref в моей схеме. Однако, когда у меня есть UUID в массиве ссылок в схеме, массив корректно сохраняется в базе данных, однако, когда он представлен, он находится в своем необработанном виде. На основе приведенного ниже примера вы можете увидеть, что scope_id представлен в правильном формате, а права - нет.

Вот версии, которые я использую: мангуст-ууид - 2.3.0 мангуст - 5.5.11

Я попытался изменить библиотеку (mongoose-uuid), изменив получатель и преобразовав значение, однако, когда я это делаю, он работает при представлении, но не удается при сохранении в базу данных. Скорее всего, это связано с тем, что значение преобразуется или преобразуется перед сохранением в базу данных.

Вот пример схемы

    {
      "code": {
        "type": String,
        "required": true
      }, 
      "scope_id": {
        "type": mongoose.Types.UUID,
        "ref": "scopes"
      },
      "entitlements": [{
        "type": mongoose.Types.UUID,
        "ref": "entitlements"
      }]
    }

Пример фактического ответа

{
    "entitlements": [
        "zMihi1BKRomM1Q41p7hgLA==",
        "ztOYL7n1RoGA6aoc0TcqoQ=="
    ],
    "code": "APPUSR",
    "scope_id": "b8f80c82-8325-4ffd-bfd7-e373a90e7c45",
    "id": "32e79061-e531-45ad-b934-56811e2ad713"
}

Ожидаемый ответ

{
    "entitlements": [
        "ccc8a18b-504a-4689-8cd5-0e35a7b8602c",
        "ced3982f-b9f5-4681-80e9-aa1cd1372aa1"
    ],
    "code": "APPUSR",
    "scope_id": "b8f80c82-8325-4ffd-bfd7-e373a90e7c45",
    "id": "32e79061-e531-45ad-b934-56811e2ad713"
}
...