Вы можете использовать удаленный хук для этой модели.Например, ваш код может выглядеть следующим образом:
MyModel.afterRemote('**', function(ctx, modelInstance, next) {
if (ctx.result) {
if (checkIfUserHasRole('reviewer')) { // <-- you need to implement this function
// if you are going to return a list of items, eg. from Model.find(...)
if (Array.isArray(modelInstance)) {
ctx.result = ctx.result.map(item => {
return modifyYourProperties(item); // <-- you need to implement this function
}
}
// if you are going to return a single item, eg. from Model.findById(...)
else {
ctx.result = modifyYourProperties(ctx.result); // <-- as above...
}
});
}
}
next();
}
Итак, теперь при каждом удаленном вызове вашей модели вы можете изменять результаты.Они уже обработаны, но еще не возвращены запрашивающей стороне, поэтому здесь вы можете скрыть нужные свойства.
Конечно, вам нужно реализовать методы checkIfUserHasRole
и modifyYourProperties
, чтобы делать то, что вы собираетесьдостичь.Подробнее об удаленных хуках вы можете прочитать здесь: https://loopback.io/doc/en/lb3/Remote-hooks.html