Поиск имени строки внутри объекта с пробелами - PullRequest
1 голос
/ 18 мая 2019

У меня есть такой объект, который содержит строковое имя с пробелами:

{
 xxx: "/xxx/",
 name: "string with spaces",
 items: {
  method: "GET",
 }
}

Я ищу в своем запросе имя для получения объекта предмета, например:

http://localhost:3000?$name=test

Но как мне теперь искать строку с такими пробелами, как это:

http://localhost:3000?$name=string with spaces

Вот процесс работы вещей:

если я не укажу имя в запросе, подобное этому http://localhost:3000?$name=, я получу следующее:

[
 {
  name: "admin",
  item: [xxx]
 },
 {
  name: "auth",
  item: [xxx]
 }
]

Если я укажу, например, объект с именем admin, например: http://localhost:3000?$name=admin, тогда я получу следующее:

[
 {
  name: "manage users",
  items: {}
 },
 {
  name: "Get user`",
  items: {}
 }
]

Теперь я пытаюсь добавить в запрос имя с такими пробелами, как это: http://localhost:3000?$name=admin/manage users, чтобы я также мог получить его элементы.

Когда я попробую следующий код:

  const { $name } = req.query;

  const name = $name.split('/');
  let currentItem = req.doc;

  name.forEach((name) => {
    const decoded = decodeURIComponent(name);
    currentItem.forEach((entry) => { 
      if (entry.name === decoded) {
        currentItem = entry.item; 
      }
    });
  });

Все работает нормально, если нет пробелов, но как только я ищу что-то с пробелами, тогда i get undefined for the entry.item, но как только я утешаю вход в систему, я получаю расшифрованное введенное имя.

1 Ответ

2 голосов
/ 18 мая 2019

Это будет кодированный URI - используйте decodeURIComponent, чтобы получить то, что вы хотите:

const encoded = encodeURIComponent("string with spaces");
const decoded = decodeURIComponent(encoded);
console.log(encoded);
console.log(decoded);
.as-console-wrapper { max-height: 100% !important; top: auto; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...