🖇 Mongoose DataLoader
Helps to avoid declaring DataLoader every Mongoose model.
DataLoader
?
What is the - DataLoader
DataLoader is a generic utility to be used as part of your application's data fetching layer to provide a simplified and consistent API over various remote data sources such as databases or web services via batching and caching.
Install
$ yarn add mongoose-dataloader
Usage
mongooseDataloader
per request
Step 1. Create import { ApolloServer } from 'apollo-server'
import { mongooseDataloader } from 'mongoose-dataloader'
const apolloServer = new ApolloServer({
// ...
async context(/* ... */) {
// ...
const mongo = mongooseDataloader()
return {
mongo,
}
},
})
mongoose.model
Step 2. Use it with import mongoose from 'mongoose'
// Mongoose model declaration
const Article = mongoose.model(
'Article',
new Schema({
user: {
type: String,
required: true,
},
deleted: {
type: Boolean,
required: true,
},
})
)
// Use it
const resolvers = {
Something: {
async someField(parent, args, ctx) {
// ...
const article = await ctx.mongo
.use(Article, {
key: '_id',
})
.load(/* ... */)
// or with some additional conditions
const article = await ctx.mongo
.use(Article, {
key: '_id',
where: {
user: 'SOME_USER_ID',
deleted: false,
},
})
.load(/* ... */)
},
},
}