Работа с нулевыми данными из Apollo GraphQL - PullRequest
0 голосов
/ 22 апреля 2020

просто интересно, как лучше всего обращаться с нулевыми данными, которые здесь передаются в виде переменной {useQuery}. В настоящее время я получаю сообщение об ошибке «TypeError: Невозможно прочитать свойство 'узел' из неопределенного» всякий раз, когда categoryId является нулевым. Я не включил свой запрос graphQL, так как он, вероятно, не нужен. Заранее спасибо.

const RelatedContent = ({categories}) => {

const {data, loading, error} = useQuery(GET_TITLES_BY_CATEGORY, {
    variables: {
        categoryId: categories.edges[0].node.databaseId
    },
    fetchPolicy: 'no-cache'
})

if (loading) return <div>Loading...</div>

if (error) return `Error! ${error.message}`

return (
    <div className={styles.sectionBackground + " section"}>
        <div className="container">
            <h3 className={styles.title}>Related film and TV</h3>
            <div className="columns is-multiline is-mobile">
                {
                    data.impactArticles.edges.map((item) => {
                        return (
                            <div className="column">
                                <ContentCard 
                                    item={item}
                                />
                            </div>
                        )
                    })
                }
            </div>
        </div>
    </div>
)

}

1 Ответ

1 голос
/ 22 апреля 2020

Ошибка гласит «Невозможно прочитать свойство 'узел' из неопределенного», поэтому вы пытаетесь получить доступ к свойству со значением, которое не определено. В этом случае это будет categories.edges[0]. Если у вас есть пустой массив, доступ к первому элементу в этом массиве приведет к значению undefined. Другими словами, вы предполагаете, что edges всегда будет содержать хотя бы один элемент, а это не так. Так что ваш код должен отражать этот факт. То, что вы делаете с этим (пропустите запрос, передайте какую-либо другую переменную и т. Д. c.), Полностью зависит от ваших бизнес-требований, поэтому мы не можем ответить на этот вопрос за вас.

...