В чем разница в использовании этих двух методов при построении запросов и мутаций GraphQL?

Меня научили двум различным методам использования GraphQL,

первый метод включал построение схемы:

    module.exports = buildSchema(`
        type Event {
            _id: ID!
            title: String!
            description: String!
            price: Float!
            date: String!
            creator: User!
         }
    `)

затем создайте преобразователь в отдельном файле:

    module.exports = {
    events: async () => {
      try {
        const events = await Event.find();
        return events
      } catch (err) {
        throw err;
      }
    }}

второй способ выглядит так:

    const PostType = new GraphQLObjectType({
        name: 'Post',
            fields: () => ({
            id: { type: GraphQLID },
            title: { type: GraphQLString },
            content: { type: GraphQLString },
            score: { type: GraphQLInt }
            })
        });
    const RootQuery = new GraphQLObjectType({
        name: 'RootQuery',
        fields: {
            posts: {
            type: new GraphQLList(PostType),
            resolve(parent, args) {
                return Post.find();
            }   
        }
    });

Я работал с обоими способами, и они оба работают, но я не совсем уверен, какие методы мне следует использовать, первый метод кажется более простым, но второй метод, похоже, обеспечивает соблюдение типов graphQL.


person ryanandrew2233    schedule 27.08.2019    source источник
comment
Существуют серьезные ограничения на использование buildSchema. Пожалуйста, просмотрите связанный обман для более подробной информации.   -  person Daniel Rearden    schedule 27.08.2019
comment
удивительный! благодарю вас!   -  person ryanandrew2233    schedule 27.08.2019