const Image = require('./image.model');
const getImage = (id, dataloader) => {
return Image.get(id, null, null, null, { dataloader });
module.exports = { getImage };
const User = require('./user.model');
const getUser = (id, dataloader) => {
return User.get(id, null, null, null, { dataloader });
module.exports = { getUser };
* The above 2 files don't know about each other (and should not).
* In our book route handler we need to fetch the book and then its author + cover image
const { instances } = require('gstore-node');
const images = require('../images/images');
const users = require('../images/images');
const Book = require('./book.model');
const gstore = instances.get('default');
const getBook = (req, res) => {
const dataloader = gstore.createDataLoader();
Book.get(req.params.id, null, null, null, { dataloader })
// Those 2 loads will be combined and only 1 request will hit the Datastore
images.getImage(book.cover, dataloader),
users.getUser(book.author, dataloader),
book.cover = entities[0];
book.author = entities[1];