Ho un problema Non riesco a trovare una risposta nei documenti di Loopback.Aggiunta di un filtro all'interno di un hook remoto beforeRemote
Dire che ho un modello Company
e un modello Employee
. Esiste una relazione 1Xn tra lo Company
e il suo Employees
. Quando viene chiamato /api/Employees
, il server restituisce tutti i dipendenti.
Desidero solo restituire l'elenco di dipendenti che si trovano nella stessa società con l'utente che richiede l'elenco.
Per questo, ho creato un gancio a distanza
Employee.beforeRemote('find', function(context, modelInstance, next) {
var reject = function() {
process.nextTick(function() {
next(null, false);
});
};
// do not allow anonymous users
var userId = context.req.accessToken.userId;
if (!userId) {
return reject();
}
//I get the details of the user who sent the request
//to learn which company does he belong to
Employee.findById(userId, function(err, user) {
if(!context.req.query.filter) context.req.query.filter={};
context.req.query.filter.where = {brandId:user.companyId};
console.log(context.req.query);
next();
});
});
Ho pensato che questo dovrebbe funzionare ogni volta, ma appearantly funziona solo quando ritrovamento ha già alcuni filtri di query come comprendere - anche se la stampa un console.log correggi oggetto context.req.query.
Cosa mi manca? Qualsiasi aiuto sarebbe molto apprezzato!
Stai dicendo che la funzione di hook 'beforeRemote()' non viene chiamata quando non viene passato nessun filtro a 'find()', o che il tuo codice non funziona in modo specifico quando nessun filtro è fornito? – jakerella
Il problema era che context.req.query.filter viene ignorato quando non è stato impostato dalla richiesta del client. Il suggerimento di Alex ha funzionato, grazie a tutti per il vostro aiuto. –