искать внутри объекта объекты и заменять значение - PullRequest
0 голосов
/ 26 июня 2019

Я хочу просмотреть все значения объектов внутри объекта и заменить значение пароля на * Ограничено *. Я хочу использовать рекурсивный способ tp loop для всех этих элементов

прежде чем я нацелился на объекты, которые содержат значение пароля, но думал, что оно может появиться где-то еще внутри записи объекта.

это то, что я пытался

if (entry.requestBody) {
    for (const key of Object.keys(entry.requestBody)) {
      if (key.toLowerCase().includes("password")) {
        entry.requestBody[key] = "***Restricted***"
      }
    }
    if (entry.config._object) {
      for (const key of Object.keys(entry.config._object)) {
        if (key.toLowerCase().includes("password")) {
          entry.config._object[key] = "***Restricted***"
        }
      }
    }
}



{
  "requestBody": {
    "email": "ror@ror.com",
    "password": "asdasdsad"
  },
  "code": "VALIDATION_ERROR",
  "config": {
    "isJoi": true,
    "name": "ValidationError",
    "details": [
      {
        "message": "\"email\" must be a valid email",
        "path": [
          "email"
        ],
        "type": "string.email",
        "context": {
          "value": "ror@ror.com",
          "key": "email",
          "label": "email"
        }
      }
    ],
    "_object": {
      "email": "ror@ror.com",
      "password": "asdasdsad"
    },
    "_meta": {
      "source": "body"
    }
  }
}
}




"requestBody": {
    "email": "ror@ror.com",
    "password": "***Restricted***"
}

1 Ответ

0 голосов
/ 26 июня 2019

Вместо recursion, как насчет использования regex для быстрого и грязного решения:

var bodyString = JSON.stringify(entry.requestBody);

var fixedBodyString = bodyString.replace(/"password":".*"/g, '"password":"***Restricted***"');

var body = JSON.parse(fixedBodyString );

Рабочий пример: https://playcode.io/353673?tabs=script.js,preview,console

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...