MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để sử dụng GraphQL với Mongoose và MongoDB mà không cần tạo mô hình Mongoose

Bạn nên xem GraphQL-to-MongoDB hoặc cách tôi học cách ngừng lo lắng và yêu thích các API truy vấn được tạo . Nó nói về một gói phần mềm trung gian tận dụng các loại của GraphQL để tạo API GraphQL của bạn và phân tích cú pháp các yêu cầu được gửi từ khách hàng thành các truy vấn MongoDB. Nó ít nhiều bỏ qua Mongoose.

Tuyên bố từ chối trách nhiệm:đây là bài đăng trên blog của tôi.

gói tạo các loại đầu vào GraphQL cho các args trường lược đồ của bạn và bao bọc xung quanh hàm giải quyết để phân tích cú pháp chúng thành các truy vấn MongoDB.

Đưa ra một GraphQLType đơn giản:

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

Đối với trường hợp sử dụng phổ biến nhất, bạn sẽ tạo một trường trong lược đồ GraphQL với getMongoDbQueryResolvergetGraphQLQueryArgs . Bộ lọc filter , projection và các tùy chọn filter được cung cấp bởi trình bao bọc có thể được chuyển trực tiếp đến hàm tìm.

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

Ví dụ về truy vấn bạn có thể gửi đến trường như vậy:

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

Ngoài ra còn có một trình bao bọc và trình tạo loại đối số cho các trường đột biến.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Di chuyển từ MongoDB sang Ứng dụng PostgreSQL Groovy

  2. Mongodb:Chuyển đổi không được hỗ trợ từ mảng sang objectId trong $ convert không có giá trị onError

  3. Model.find (). ToArray () tuyên bố không có phương thức .toArray ()

  4. Sử dụng toàn cầu JsonConverter trên một lớp không có thuộc tính

  5. Có thể lấy các trường theo thứ tự chiếu trong mongo Aggregation Frameworks không