在 beforeRemote 远程挂钩中添加过滤器
Adding a filter inside a beforeRemote remote hook
我有一个问题,在 Loopback 的文档中找不到答案。
假设我有一个模型 Company
和一个模型 Employee
。 Company
与其 Employees
之间存在 1Xn 关系。当 /api/Employees
被调用时,服务器 returns 所有员工。
我只想return与请求列表的用户在同一公司的员工列表。
为此,我创建了一个远程挂钩
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();
});
});
我认为这应该每次都有效,但表面上它只在 find 已经有一些查询过滤器(如 include)时有效——尽管 console.log 打印出正确的 context.req.query 对象。
我错过了什么?任何帮助将不胜感激!
context.args.filter
似乎适用于此目的。
作为旁注,您可能希望将其与客户提供的内容合并,而不是替换 where
。实现思路可以参考:https://github.com/strongloop/loopback-datasource-juggler/blob/master/lib/utils.js#L56-L122
我有一个问题,在 Loopback 的文档中找不到答案。
假设我有一个模型 Company
和一个模型 Employee
。 Company
与其 Employees
之间存在 1Xn 关系。当 /api/Employees
被调用时,服务器 returns 所有员工。
我只想return与请求列表的用户在同一公司的员工列表。
为此,我创建了一个远程挂钩
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();
});
});
我认为这应该每次都有效,但表面上它只在 find 已经有一些查询过滤器(如 include)时有效——尽管 console.log 打印出正确的 context.req.query 对象。
我错过了什么?任何帮助将不胜感激!
context.args.filter
似乎适用于此目的。
作为旁注,您可能希望将其与客户提供的内容合并,而不是替换 where
。实现思路可以参考:https://github.com/strongloop/loopback-datasource-juggler/blob/master/lib/utils.js#L56-L122