我遇到问题我无法在Loopback的文档中找到答案。在beforeRemote远程挂钩内添加过滤器
假设我有一个型号Company
和一个型号Employee
。 Company
与其Employees
之间有1Xn的关系。当调用/api/Employees
时,服务器返回所有员工。
我只想返回与请求列表的用户处于同一公司的员工列表。
对于这一点,我创建了一个远程钩
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();
});
});
我想这应该每工作时间,但appearantly它只能当发现已经有一些查询过滤器等包括 - 虽然执行console.log打印正确的context.req.query对象。
我错过了什么?任何帮助将不胜感激!
你是说,当没有过滤器传递给find()时没有调用'beforeRemote()'钩子函数,或者你的代码明确地不工作没有提供过滤器? – jakerella 2015-03-31 17:30:51
问题在于context.req.query.filter在未从客户端请求中设置时被忽略。亚历克斯的建议虽然工作,谢谢大家的帮助。 – 2015-04-01 07:04:56