Gatsby и Woocommerce API - перестали синхронизироваться поля категории продукта в GraphQL - PullRequest
0 голосов
/ 21 сентября 2019

Я создаю приложение для электронной коммерции без головы с Gatsby js и плагином gatsby-source-woocommerce .Продукты подразделяются на две основные категории (женщина и мужчина) с набором подкатегорий.Страницы продуктов и страницы категорий создаются динамически с использованием Node и GraphQL .

Все работало отлично, но теперь главная категория 'Женщина' внезапно перестала появляться в GraphQL, в результате чего страница / женщина была пустой.Странная часть в том, что все остальные категории, включая подкатегории женщин, в порядке.Я добавил новые категории в бэк-энде woocommerce, чтобы найти проблему, и ничего не будет синхронизировано.Изменение других данных работает, например, название продукта, цены или изображения. Таким образом, в основном получается, что GraphQL не загружает обновления, а только для «allWcProductsCategories» .

Я попытался очистить gatsby, я попытался переустановить зависимости, и при запуске не появилось никаких предупреждений или ошибок.развиваться.И теперь я схожу с ума.Помогите?

Код gatsby-node.js (который отлично работает)

const path = require('path')

module.exports.createPages = async ({ graphql, actions }) => {
    const { createPage } = actions
    const singleTemplate = path.resolve('./src/templates/single.js')
    const womanTemplate = path.resolve('./src/templates/woman.js')
    const manTemplate = path.resolve('./src/templates/man.js')
    const res = await graphql(`
        query {
            allWcProducts {
                edges {
                    node {
                        slug
                    }
                }
            }
            allWcProductsCategories {
                edges {
                    node {
                        slug
                    }
                }
            }
        }
    `)

    res.data.allWcProducts.edges.forEach((edge) => {
        createPage({
            component: singleTemplate, 
            path: `/${edge.node.slug}`, 
            context: {
                slug: edge.node.slug
            }
        })
    })

    res.data.allWcProductsCategories.edges.forEach((edge) => {

        var category = `${edge.node.slug}`;

        if (category === 'woman' ) {
            var slug = `/${edge.node.slug}`;
            createPage({
                component: womanTemplate, 
                path: slug, 
                context: {
                    slug: edge.node.slug
                }
            })
        } else if (category.startsWith('woman-')) {
            var slug = `/woman/${edge.node.slug}`;
            slug = slug.replace('woman-', '')
            createPage({
                component: womanTemplate, 
                path: slug, 
                context: {
                    slug: edge.node.slug
                }
            })
        } else if (category === 'man' ) {
            var slug = `/${edge.node.slug}`;
            createPage({
                component: manTemplate, 
                path: slug, 
                context: {
                    slug: edge.node.slug
                }
            })
        } else if (category.startsWith('man-')) {
            var slug = `/man/${edge.node.slug}`;
            slug = slug.replace('man-', '')
            createPage({
                component: manTemplate, 
                path: slug, 
                context: {
                    slug: edge.node.slug
                }
            })
        }
    })

    if (process.env.NODE_ENV === 'development') {
        process.env.GATSBY_WEBPACK_PUBLICPATH = '/'
    }
}

1 Ответ

0 голосов
/ 22 сентября 2019

попробуйте gatsby clean вместо gatsby clear и убедитесь, что у вас установлена ​​последняя версия cli.Гэтсби ясно, это не инструмент Cli.Но если бы это была проблема с кэшированием, у вас были бы старые данные, а не данные.

Кроме этого, вы использовали console.log edge.node.slug (где вы установили его в категорию var)?Есть ли слизняки, настроенные на «женщину»?Убедитесь, что это не 'женщина /'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...