0.3.1 • Published 3 years ago
mongoose-dataloader v0.3.1
🖇 Mongoose DataLoader
Helps to avoid declaring DataLoader every Mongoose model.
What is the DataLoader
?
- 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
Step 1. Create mongooseDataloader
per request
import { ApolloServer } from 'apollo-server'
import { mongooseDataloader } from 'mongoose-dataloader'
const apolloServer = new ApolloServer({
// ...
async context(/* ... */) {
// ...
const mongo = mongooseDataloader()
return {
mongo,
}
},
})
Step 2. Use it with mongoose.model
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(/* ... */)
},
},
}