Как редактировать данные Gatsby GraphQL без изменения оригинала

#reactjs #wordpress #graphql

Вопрос:

Я создаю сайт с помощью Гэтсби и получаю данные из WordPress.

Я терпеть не Node могу этого черта, поэтому я хотел очистить данные. Проблема возникает при повторном посещении страницы (без обновления браузера), теперь она выдает ошибку, которая Node не определена.

Честно говоря, документы Гэтсби-это беспорядок, поэтому я до сих пор понятия не имею, как работает часть graphql.

Запрос в index файле:

 export const query = graphql`
    query {
        allWpMasina(limit: 6) {
            nodes {
                id
                atrumkarbas {
                    nodes {
                        name
                    }
                }
            }
        }
    }
`;
 

У всех автомобилей есть только один «атрумкарбас», поэтому я просто хотел присвоить ему имя, не записывая atrumkarbas.node[0].name его каждый раз, когда я хочу получить к нему доступ.

Поэтому на странице индекса я добавил следующее:

 const IndexPage = ({ data: { allWpMasina } }) => {
    let cars = allWpMasina.nodes;
    cars.forEach((car) => {
        car.atrumkarbas = car.atrumkarbas.nodes[0].name;
 

Как вы можете видеть, он избавился от этого .nodes[0].name , и все это отлично работает.
Но когда я снова перехожу на эту страницу:

 Cannot read properties of undefined (reading '0')
 

Я попытался добавить let cars = allWpMasina.nodes.map() , чтобы он копировал его каждый раз, не изменяя data.allWpMasina , но каким-то образом он все равно кэширует их обоих и портит повторный визит.

Ведение журнала консоли до внесения изменений выводит уже отформатированный результат! Если я удалю forEach его, он вернется к узлу узла узла, но когда я снова его добавлю, allWpMasina он будет таким же, как cars и до forEach того, как он будет выполнен!

Как Гэтсби обрабатывает данные Graphql? Как я могу скопировать и изменить его, не затрагивая исходные данные?

Комментарии:

1. исправьте это в источнике проблемы … просто определите поле (одно значение) CPT, а не отношение (массив)

2. @xadm, Но нам нужно заранее определить параметры, и, сделав его нереляционным, мы каждый раз будем делать его уникальным. Я также использую ACF, так что, может быть, просто лучше запросить все через него? Даже таксономии?

3. много [сообщений/cpt] к одному [значению] вместо многих [сообщений/cpt] ко многим [значениям] — все еще связь, опция «выбрать один»