如何访问回送模型中的查询字符串参数?

vnn*_*ncn 5 loopbackjs

对于模型定义product.js,我的api端点如下所示

api / products / 9720?id_shop = 1&id_lang = 1

我需要访问product.js中的id_shop来应用where子句,然后从产品表中获取记录。

Product.observe('access', function (ctx, next) {
    next();
});
Run Code Online (Sandbox Code Playgroud)

我将如何访问id_shop和id_lang?

小智 4

您可以使用远程方法创建自定义端点:

https://docs.strongloop.com/display/public/LB/Remote+methods

如果您确实想更改 Model.find() 的默认行为,可以使用 Loopback.getCurrentContext() ,然后为每个 GET 请求注入过滤器:

Product.on('dataSourceAttached', function(obj){
    var find = Product.find;
    Product.find = function(filter, cb) {           
        var id_shop = loopback.getCurrentContext().active.http.req.query.id_shop;           
        filter = {where:{id_shop: id_shop}};
        return find.apply(this, arguments);
    };
});
Run Code Online (Sandbox Code Playgroud)

这将覆盖传入的任何过滤器,因此您需要使用额外的逻辑来处理它。