Схема Mongoose + GraphQL (сервер Apollo) - PullRequest
0 голосов
/ 05 марта 2019

У нас есть коллекция БД, которая немного сложнее.Многие из наших ключей являются объектами JSON, где поля не являются фиксированными и изменяются в зависимости от вводимых пользователем данных в пользовательском интерфейсе.Как написать mongoose и GraphQL Schema для такого сложного типа?

{
    "_id" : ObjectId("5ababb359b3f180012762684"),
    "item_type" : "Sample",
    "title" : "This is sample title",
    "sub_title" : "Sample sub title",
    "byline" : "5c6ed39d6ed6def938b71562",
    "lede" : "Sample description",
    "promoted" : "",
    "slug" : [ 
        "myurl"
    ],
    "categories" : [ 
        "Technology"
    ],
    "components" : [ 
        {
            "type" : "Slide",
            "props" : {
                "description" : {
                    "type" : "",
                    "props" : {
                        "value" : "Sample value"
                    }
                },
                "subHeader" : {
                    "type" : "",
                    "props" : {
                        "value" : ""
                    }
                },
                "ButtonWorld" : {
                    "type" : "a-button",
                    "props" : {
                        "buttonType" : "product",
                        "urlType" : "Internal Link",
                        "isServices" : false,
                        "title" : "Hello World",
                        "authors" : [ 
                            {
                                "__dataID__" : "Qm9va0F1dGhvcjo1YWJhYjI0YjllNDIxNDAwMTAxMGNkZmY=",
                                "_id" : null,
                                "First_Name" : "John",
                                "Last_Name" : "Doe",
                                "Display_Name" : "John Doe",
                                "Slug" : "john-doe",
                                "Role" : 1
                            }
                        ],
                        "isbns" : [ 
                            "9781497603424"
                        ],
                        "image" : "978-cover.jpg",
                        "price" : "8.99",
                        "bisacs" : [],
                        "customCategories" : [],
                },
                "salePrice" : {
                    "type" : "",
                    "props" : {
                        "value" : ""
                    }
                }
            }
        }, 
   "tags" : [ 
        {
            "id" : "5abab58042e2c90011875801",
            "name" : "Tag Test 1"
        }, 
        {
            "id" : "5abab5831242260011c248f9",
            "name" : "Tag Test 2"
        }, 
        {
            "id" : "592450e0b1be5055278eb5c6",
            "name" : "horror",
        }, 
        {
            "id" : "59244a96b1be5055278e9b0e",
            "name" : "Special Report",
            "_id" : "59244a96b1be5055278e9b0e"
        }
    ],
    "created_at" : ISODate("2018-03-27T21:44:21.412Z"),
    "created_by" : ObjectId("591345bda429e90011c1797e")
}

Я считаю, что Mongoose имеет смешанный тип, но как мне представить такой сложный тип в Apollo GraphQL Server и Mongoose Schema.Кроме того, в настоящее время мой распознаватель просто models.product.find ().Поэтому, если у меня такой сложный тип, нужно понимать, какое обновление необходимо внести в мой преобразователь.

Было бы здорово, если бы я получил полное решение для схемы GraphQL Apollo, схемы mongoose и преобразователя для моих данных.

1 Ответ

0 голосов
/ 22 марта 2019

Наконец-то найдено решение проблемы.

Вы можете объявить новый тип и ссылаться на него в typeDef для схемы GraphQL.

В модели mongoose вы можете ссылаться на него как {type: Array}

...