From 94e987013396a884e03378358273daeea76fbec1 Mon Sep 17 00:00:00 2001 From: Joey Baker Date: Thu, 27 Oct 2016 12:33:31 -0700 Subject: [PATCH] Fix(crud) 404 errors for destroy and destroyAll --- src/crud.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/crud.js b/src/crud.js index da0b756..be9bcd1 100644 --- a/src/crud.js +++ b/src/crud.js @@ -244,10 +244,18 @@ export const destroy = ({ server, model, prefix = '/', config }) => { @error async handler(request, reply) { const where = parseWhere(request); - if (request.params.id) where[model.primaryKeyField] = request.params.id; + const { id } = request.params; + if (id) where[model.primaryKeyField] = id; const list = await model.findAll({ where }); + if (!list.length) { + return void reply(id + ? notFound(`${id} not found.`) + : notFound('Nothing found.') + ); + } + await Promise.all(list.map(instance => instance.destroy())); const listAsJSON = list.map((item) => item.toJSON()); @@ -266,9 +274,17 @@ export const destroyAll = ({ server, model, prefix = '/', config }) => { @error async handler(request, reply) { const where = parseWhere(request); + const { id } = request.params; const list = await model.findAll({ where }); + if (!list.length) { + return void reply(id + ? notFound(`${id} not found.`) + : notFound('Nothing found.') + ); + } + await Promise.all(list.map(instance => instance.destroy())); const listAsJSON = list.map((item) => item.toJSON());