UNPKG

prismic-website

Version:

A ready to use webserver (Express base) with utility methods for working with Prismic.io.

63 lines (53 loc) 1.67 kB
var logger = require('logfmt'); var Promise = require('promise'); var Prismic = require('prismic.io').Prismic; module.exports = function query(ctx, params) { if (!ctx.api || !ctx.ref) { logger.log({ type: 'warning', msg: 'ctx must include a reference and Prismic API' }); return false; } var limit = params.limit || 20; var sort = params.sort || false; var predicate = null; if (params.type) { if (typeof params.type === 'string') { predicate = Prismic.Predicates.at('document.type', params.type); } if (params.type instanceof Array) { predicate = Prismic.Predicates.any('document.type', params.type); } } if (params.id && predicate === null) { if (typeof params.id === 'string') { predicate = Prismic.Predicates.at('document.id', params.id); } if (params.id instanceof Array) { predicate = Prismic.Predicates.any('document.id', params.id); } } if (predicate === null) { logger.log({ type: 'warning', msg: 'Missing query type or id' }); return false; } return new Promise(function (resolve, reject) { var request = ctx.api.form('everything') .ref(ctx.ref) .query(predicate) .pageSize(limit); if (sort) { request.orderings(sort); } request.submit(function(err, response) { if (err) { return reject(err); } resolve(response); }); }); }