Как избежать пустых строковых значений в объекте запроса - PullRequest
1 голос
/ 11 ноября 2019

Для определенного запроса axios:

            API.post(
              `v${process.env.REACT_APP_API_VERSION}/register/company/`,
              {
                type: values.type,
                dba: values.dba,
                ein: values.ein,
                file_type: values.file_type,
              },

Я бы хотел избежать отправки параметров, если им не присвоено значение (все еще "").

т.е. Хотелось бы узнать самый чистый способ включения только непустых параметров в мой объект запроса. Я могу сделать это, используя проверку if, но делать это для каждого элемента при больших запросах не имеет смысла. например:

            const postData = {
              first_name: values.first_name,
              last_name: values.last_name
            };
            if (values.middle_name !== "") {
              postData.middle_name = values.middle_name;
            }

Спасибо

Ответы [ 2 ]

2 голосов
/ 11 ноября 2019

Вы можете попробовать что-то вроде этого:

Object.keys(values).forEach((key) => {
  if(!values[key]) delete values[key];
})

Что он в основном делает, так это удаляет любой элемент внутри values объекта False, который включает в себя пустые строки.

0 голосов
/ 11 ноября 2019

Самое короткое решение, которое я могу придумать. Для общего решения я бы использовал оболочку, но если вам нужно проверить только несколько свойств, этого может быть достаточно.

        const v = values; 
        API.post(
          `v${process.env.REACT_APP_API_VERSION}/register/company/`,
          {
            ...(v.type&&{type: v.type}),
            ...(v.dba&&{dba: v.dba}),
            ...(v.ein&&{type: v.ein}),
            file_type: values.file_type,
          },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...