MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana cara menggunakan GraphQL dengan Mongoose dan MongoDB tanpa membuat model Mongoose

Anda harus melihat GraphQL-to-MongoDB, atau bagaimana saya belajar berhenti mengkhawatirkan dan menyukai API kueri yang dihasilkan . Ini berbicara tentang paket middleware yang memanfaatkan jenis GraphQL untuk menghasilkan API GraphQL Anda dan mem-parsing permintaan yang dikirim dari klien ke kueri MongoDB. Ini kurang lebih melompati Luwak.

Penafian:ini adalah posting blog saya.

paket menghasilkan jenis input GraphQL untuk argumen bidang skema Anda, dan membungkus fungsi resolve untuk menguraikannya ke dalam kueri MongoDB.

Diberikan GraphQLType sederhana:

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

Untuk kasus penggunaan yang paling umum, Anda akan membuat bidang dalam skema GraphQL dengan getMongoDbQueryResolver dan getGraphQLQueryArgs . filter , projection , dan options disediakan oleh pembungkus dapat diteruskan langsung ke fungsi find.

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

Contoh kueri yang dapat Anda kirim ke bidang seperti itu:

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

Ada juga generator tipe pembungkus dan argumen untuk bidang mutasi.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose pre.save() async middleware tidak berfungsi seperti yang diharapkan

  2. Semua server nama gagal menjawab port UDP 53 Fungsi cloud Google python 3.7 atlas mongodb

  3. 10 pertanyaan untuk ditanyakan (dan dijawab) saat menghosting MongoDB di AWS

  4. MongoDB mencocokan beberapa elemen dalam array

  5. luwak untuk menentukan pembaruan-upsert melakukan penyisipan atau pembaruan