sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan bruger jeg GraphQL med Mongoose og MongoDB uden at oprette Mongoose-modeller

Du bør se på GraphQL-to-MongoDB, eller hvordan jeg lærte at stoppe med at bekymre mig og elske genererede forespørgsels-API'er . Den taler om en middleware-pakke, der udnytter GraphQL's typer til at generere din GraphQL API og analyserer anmodninger sendt fra klienter til MongoDB-forespørgsler. Den springer mere eller mindre over Mongoose.

Ansvarsfraskrivelse:dette er mit blogindlæg.

pakken genererer GraphQL-inputtyper til dine skemafeltargumenter og omslutter løsningsfunktionen for at parse dem til MongoDB-forespørgsler.

Givet en simpel 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 }
                })
            }))
        }
    })
}); 

Til den mest almindelige brug skal du bygge et felt i GraphQL-skemaet med en getMongoDbQueryResolver og getGraphQLQueryArgs . filter , projection og options leveret af indpakningen kan videregives direkte til søgefunktionen.

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()
    )
}

Et eksempel på en forespørgsel, du kan sende til et sådant felt:

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

Der er også en indpaknings- og argumenttypegenerator til mutationsfelter.




  1. Kør databasemigrering (mongodb) med node.js

  2. Hvordan anvender man betingelse på $lookup-resultat i mongoDB?

  3. pymongo.errors.ConnectionFailure:kunne ikke oprette forbindelse til localhost:27017:[Errno 111] Forbindelse afvist

  4. Mongodb findOneAndUpdate-funktionen indsætter nyt dokument