Gatsby и Directus: получить ссылочный файл из строки таблицы - PullRequest
0 голосов
/ 10 октября 2018

У меня есть экземпляр Directus с таблицей «пользователи».С каждой строкой пользователя связано изображение.Я пытаюсь использовать Gatsby для отображения изображения каждого пользователя на странице профиля, но у меня возникают проблемы с сопоставлением каждого пользователя с его изображением в Gatsby.

Я использую gatsby-source-directus и Gatsby v2.У меня нет проблем с получением списка всех моих пользователей с помощью этого запроса GraphQL:

{
    allDirectusUser {
        edges {
            node {
                firstName,
                lastName,
                username,
                gender
            }
        }
    }
}

Когда я добавляю изображение в запрос GraphQL, это (полезные) поля, которые я могу запросить:


{
    allDirectusUser {
        edges {
            node {
                firstName,
                lastName,
                username,
                gender,
                <b>image {
                    data {
                        name,
                        url
                    }
                }
            </b>}
        }
    }
}

// Output
{
    "data": {
        "allDirectusUser": {
            "edges": [{
                "node": {
                    "firstName": "jk",
                    "lastName": "joshing",
                    "username": "jkjustjoshing",
                    "gender": "m",
                    <b>"image": {
                        "data": {
                            "name": "9e34b416be5e81aca5e1806662f555af.jpg",
                            "url": "/storage/uploads/9e34b416be5e81aca5e1806662f555af.jpg"
                        }
                    }</b>
                }
            }]
        }
    }
}

Я надеялся, что имя изображения или URL будет соответствовать идентификатору, назначенному для файла в списке allFiles GraphQL, но, похоже, идентификаторы совершенно разные и не связаны:


{
    allFiles {
        edges {
            node {
                absolutePath,
                base,
                name,
                publicURL,
                id
            }
        }
    }
}

// Output
{
    "data": {
        "allFiles": {
            "edges": [{
                "node": {
                    "absolutePath": "/Users/jkjustjoshing/Documents/gatsbyProject/.cache/gatsby-source-filesystem/dc43c94c4bcc309ba39fc0e723ef14af.jpg",
                    "base": "dc43c94c4bcc309ba39fc0e723ef14af.jpg",
                    "name": "dc43c94c4bcc309ba39fc0e723ef14af",
                    "publicURL": "/static/dc43c94c4bcc309ba39fc0e723ef14af-adecf30d9a17f3d98651e7476178da68.jpg",
                    "id": "6ede8075-f33e-5273-8dcd-8d41f3b365f5"
                }
            }]
        }
    }
}

Идентификатор, который знает Directus, 9e34b..., а идентификатор, который знает Гэтсби, dc43c....Похоже, что Gatsby ID создается, когда gatsby-source-directus загружает изображение с моего сервера Directus.Я не уверен, что делаю что-то не так, или плагин работает неправильно.

Я надеюсь, что кто-нибудь может мне помочь: а) заставить их соответствовать или б) запроситьpublicURL изображения непосредственно от объекта пользователя, вместо того, чтобы делать второй запрос изображения и пытаться фильтровать изображения.

...