return context;\r
}\r
\r
- const params = Object.assign({}, context.params, { provider: null });\r
+ //see if the entity has already been pulled and stored, else get it\r
+ if(!context.params.entityData){\r
+ const params = Object.assign({}, context.params, { provider: null });\r
+ context.params.entityData = await service.get(context.id, params);\r
+ }\r
\r
- const result = await service.get(context.id, params);\r
- throwUnlessCan(action, result);\r
+ throwUnlessCan(action, context.params.entityData);\r
\r
if (action === 'get') {\r
- context.result = pick(result, allowedFields);\r
+ context.result = pick(context.params.entityData, allowedFields);\r
}else{\r
if(context.data){\r
Object.keys(context.data).forEach(key => {\r
if(key == "$push"){\r
Object.keys(context.data['$push']).forEach(k => {\r
- throwUnlessCan(action, result, k);\r
+ throwUnlessCan(action, context.params.entityData, k);\r
});\r
}else{\r
- throwUnlessCan(action, result, key);\r
+ throwUnlessCan(action, context.params.entityData, key);\r
}\r
})\r
}\r