Отфильтруйте поля в ответе API в React, используя API выборки. - PullRequest
0 голосов
/ 30 января 2020

У меня есть ответ API, как показано ниже, мне нужно отфильтровать его, чтобы я мог получить только несколько полей из этого. например, мне просто нужно описание и placeLocation.

results: [{placeId: "BHLLC", placeLocation: "BUFR", locationType: "BUFR",…},…] 0: {placeId: "BHLLC", placeLocation: "BUFR", locationType: "BUFR",…} binControl: "Y" description: "BUFR - Good Stock" locationType: "BUFR" ours: "Y" placeId: "BHLLC" placeLocation: "BUFR" transferIsUse: "Y" usable: "F"

Мне нужно передать поля в теле внутри выборки. js файл, как показано ниже

const body = { criteria, fields: ["description", "placeLocation", "whosPlace"], skip: 0, take: 2000 };

А потом я пытаюсь отобразить результаты, как это. Обратите внимание, что place является результатом вызова функции fetch для вызова API.

let result = [];
    if (places) {
        result = places.results.map(p => ({
            placeId: p.description, name: p.placeLocation
        }));
    }

функция выборки из файла выборки выглядит следующим образом

export const fetchPlacesTo = async () => {

const criteria = [
    {
        anyOf: [
            {
                field: "WhosPlace",
                value: "L%",
                operator: "li"
            }
        ]
    }
];
const body = {
    criteria,
    fields: ["description", "placeLocation", "whosPlace"],
    skip: 0,
    take: 2000
};

const result = sessionManager
    .refreshFetch(
        `${**********_API_URI}/place/place`,
        fetchUtils.hwsGetRequest(body)
    )
    .then(parseResponse);

return result;

};

И функция, которая вызывает это ниже

export const getPlacesTo = () => async dispatch => {
try {
    dispatch(loading.incrementLoading());

    const places = await fetches.fetchPlacesTo().catch(error => {
        console.log(error); //CRS: Change to logger
        dispatch(loading.setWarning(errors.ERROR_GET_DATA));
    });

    let result = [];
    if (places) {
        result = places.results.map(p => ({
            placeId: p.description, name: p.placeLocation
        }));
    }

    dispatch({
        type: constants.GET_LOOKUP_ENTITY,
        payload: {
            name: "placeIdToRepair",
            value: result
        }
    });

1 Ответ

0 голосов
/ 30 января 2020

Полагаю, вы хотите, чтобы результат placeId и placeLocation froom стал результатом

var result=[]
var data={results: [{placeId: "BHLLC", placeLocation: "BUFR", locationType: "BUFR"},{placeId: "BHALC", placeLocation: "BAFR", locationType: "BAFR"},{placeId: "BHBLLC", placeLocation: "BUBFR", locationType: "BUBFR"}]}
data.results.map(p=>result.push({
            placeId: p.placeId, name: p.placeLocation
        }));
console.log(result)//(3) [{…}, {…}, {…}]
0:
placeId: "BHLLC"
name: "BUFR"
__proto__: Object
1:
placeId: "BHALC"
name: "BAFR"
__proto__: Object
2:
placeId: "BHBLLC"
name: "BUBFR"
__proto__: Object
length: 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...