Fix: include option api correction #6

Merged
joeybaker merged 1 commits from fix-include into master 2016-07-09 04:43:14 +00:00
2 changed files with 15 additions and 4 deletions
Showing only changes of commit 2ea6c2e3a8 - Show all commits

View File

@ -31,6 +31,8 @@ export const list = (server, model) => {
const include = parseInclude(request); const include = parseInclude(request);
const where = parseWhere(request); const where = parseWhere(request);
if (include instanceof Error) return void reply(include);
const list = await model.findAll({ const list = await model.findAll({
where, include, where, include,
}); });

View File

@ -1,18 +1,27 @@
import { omit } from 'lodash'; import { omit, identity } from 'lodash';
export const parseInclude = request => { export const parseInclude = request => {
const include = Array.isArray(request.query.include) ? request.query.include const include = Array.isArray(request.query.include) ? request.query.include
: [request.query.include]; : [request.query.include];
const noGetDb = typeof request.getDb !== 'function';
const noRequestModels = !request.models;
if (noGetDb && noRequestModels) {
return new Error('`request.getDb` or `request.models` are not defined. Be sure to load hapi-sequelize before hapi-sequelize-crud.');
}
const {models} = noGetDb ? request : request.getDb();
return include.map(a => { return include.map(a => {
if (typeof a === 'string') return request.models[a]; if (typeof a === 'string') return models[a];
if (a && typeof a.model === 'string' && a.model.length) { if (a && typeof a.model === 'string' && a.model.length) {
a.model = request.models[a.model]; a.model = models[a.model];
} }
return a; return a;
}).filter(a => a); }).filter(identity);
}; };
export const parseWhere = request => { export const parseWhere = request => {