Как мне отформатировать ответ, если ключ объекта существует? - PullRequest
1 голос
/ 05 марта 2019

Описание

Я получил ответ от Сервиса, который я вызываю на моем сервере NODE.

Затем я преобразую свой ответв более дружественном формате, например;

export default (response) => {
const {
    limit,
    debt,
    outstanding
} = response.object;

const transformedData = {
    outstanding: retrieveAmounts(outstanding),
    limit: retrieveAmounts(limit),
    debt: retrieveAmounts(debt)
};
return _omitBy(transformedData, value => value === null);
};

Как видите, я запускаю функцию retrieveAmounts(value) для каждого элемента.

const retrieveAmounts = ({ amount, code }) => ({
amount: isStringDefined(amount) ? amount : null,
currencyCode: isStringDefined(code) ? code : null
});

Обновление

retrieveAmounts(), в свою очередь, вызывает isDefinedString, который проверяет предоставленный тип и длину, например,

const isDefinedString = value => typeof value === 'string' && value.length > 0;

Проблема в том, что пока оба;долг и лимит обязательны и всегда будут возвращены - непогашенные нет.Если нечего отображать, ключ объекта просто не будет там.Это когда retrieveAmounts() выдает ошибку, потому что он не может найти amount или code из неопределенного - так как они не существуют, потому что ключ не существует.

Как я могу отформатировать ключ объектаесли он существует, но возвращает ноль, если его нет?Таким образом, retrieveAmounts() не выдаст ошибку, и я просто предоставлю limit:null моему внешнему приложению.

Ответы [ 2 ]

2 голосов
/ 05 марта 2019

«неопределенный» не может быть разрушен.Вы должны проверить, является ли он неопределенным, прежде чем уничтожить.

let limit = {'amount': '1000', 'code': '£'}, outstanding = undefined, debt = {'amount': '900', 'code': '£'};

const retrieveAmounts = amountStruct => {
    if (typeof amountStruct === 'undefined') 
        return null;
    let {amount, code} = amountStruct;
     return {
        amount: isStringDefined(amount) ? amount : null,
        currencyCode: isStringDefined(code) ? code : null
    };
};

Встроенный, следуя коду @ alex35.

const retrieveAmounts = (amountStruct) => ((typeof amountStruct === 'undefined') ? null : {
    amount: isStringDefined(amountStruct.amount) ? amountStruct.amount : null,
    currencyCode: isStringDefined(amountStruct.code) ? amountStruct.code : null
});
1 голос
/ 05 марта 2019

Вы можете поместить параметр по умолчанию в вашу функцию retrieveAmounts, поэтому размещение неопределенного внутри вашей функции retrieveAmounts не приведет к ошибке.

const retrieveAmounts = (outstanding = { amount: null, code: null }) => ({  // << here
    amount: isStringDefined(outstanding.amount) ? amount : null,
    currencyCode: isStringDefined(outstanding.code) ? code : null
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...