Исключение при разборе Mapper при заполнении поля - PullRequest
0 голосов
/ 19 февраля 2019

Я использую Elasticsearch для хранения всей регистрации из моего REST API с Winston.После тестирования и выполнения некоторых запросов через мой API, я замечаю, что получаю 'object mapping for [fields.meta.res.body.x] tried to parse field [x] as object, but found a concrete value' несколько раз.Это происходит потому, что я не всегда заполняю поля, что может привести либо к полю с идентификатором, либо к полю с объектом с заполненными данными.

Например, ответ может быть:

{
    "_id": "5c6be1ab42cb9db50832469e",
    "name": "xyz",
    "role": "5c3e003efb6fc0600be0d642"
}

или

{
    "_id": "5c6be1ab42cb9db50832469e",
    "name": "xyz",
    "role": {
        "_id": "5c3e003efb6fc0600be0d642",
        "name": "admin"
    }
}

Можно ли как-нибудь заставить поле принять два разных типа значений?Если нет, как лучше обойти эту проблему?Спасибо!

1 Ответ

0 голосов
/ 19 февраля 2019

Вы не можете иметь поле object (т.е. role), содержащее конкретное значение (то есть строку), и наоборот.Вам нужно определиться с одним или другим.В вашем случае, что может показаться разумным, это всегда указывать role как объект и оставлять role.name равным нулю, если нет значения.Если вместо этого:

{
    "_id": "5c6be1ab42cb9db50832469e",
    "name": "xyz",
    "role": "5c3e003efb6fc0600be0d642"          <-- this is no good since role is an object
}

использовать это:

{
    "_id": "5c6be1ab42cb9db50832469e",
    "name": "xyz",
    "role": {
        "_id": "5c3e003efb6fc0600be0d642",      <-- specify the id here
        "name": null                            <-- use null here
    }
}

И если вы страдаете от противоположной проблемы (т.е. пытаетесь вписать объект в строку), то вам нужноубедитесь, что role действительно содержит значение role._id, т.е. вместо этого

{
    "_id": "5c6be1ab42cb9db50832469e",
    "name": "xyz",
    "role": {
        "_id": "5c3e003efb6fc0600be0d642",
        "name": null                      
    }
}

используйте это:

{
    "_id": "5c6be1ab42cb9db50832469e",
    "name": "xyz",
    "role": "5c3e003efb6fc0600be0d642"          <-- this should be role._id
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...