MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да използвам GraphQL с Mongoose и MongoDB, без да създавам модели на Mongoose

Трябва да погледнете GraphQL-to-MongoDB, или как се научих да спра да се тревожа и да обичам API за генерирани заявки . Говори се за междинен пакет, който използва типовете на GraphQL, за да генерира вашия GraphQL API и анализира заявки, изпратени от клиенти, в MongoDB заявки. Повече или по-малко прескача Mongoose.

Отказ от отговорност:това е моята публикация в блога.

пакет генерира входни типове GraphQL за аргументите на полето на вашата схема и обгръща функцията за разрешаване, за да ги анализира в MongoDB заявки.

Като се има предвид прост GraphQLType:

const PersonType = new GraphQLObjectType({
    name: 'PersonType',
    fields: () => ({
        age: { type: GraphQLInt },
        name: {
            type: new GraphQLNonNull(new GraphQLObjectType({
                name: 'NameType',
                fields: () => ({
                    firstName: { type: GraphQLString },
                    lastName: { type: GraphQLString }
                })
            }))
        }
    })
}); 

За най-честия случай на употреба ще изградите поле в схемата на GraphQL с getMongoDbQueryResolver и getGraphQLQueryArgs . filter , projection и options осигурени от обвивката, могат да бъдат предадени директно на функцията за намиране.

person: {
    type: new GraphQLList(PersonType),
    args: getGraphQLQueryArgs(PersonType),
    resolve: getMongoDbQueryResolver(PersonType,
        async (filter, projection, options, source, args, context) =>
            await context.db.collection('person').find(filter, projection, options).toArray()
    )
}

Пример за заявка, която можете да изпратите до такова поле:

{
    person (
        filter: {
            age: { GT: 18 },
            name: { 
                firstName: { EQ: "John" } 
            }
        },
        sort: { age: DESC },
        pagination: { limit: 50 }
    ) {
        name { 
            lastName
        }
        age
    }
}

Има също обвивка и генератор на типове аргументи за полета за мутация.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Съвети за управление на конфигурациите на вашата база данни

  2. Как да групирате в агрегат, но също така да показвате други полета с помощта на Mongo?

  3. как да получите обяснение на Python Mongo Aggregate с помощта на db.command?

  4. Импортиране на csv в mongodb с помощта на PHP код

  5. cappedMax не работи в winston-mongodb logger в Node.js на Ubuntu