【问题标题】:How to add query parameter to existing remote method in loopback如何在环回中将查询参数添加到现有的远程方法
【发布时间】:2016-03-22 04:16:24
【问题描述】:

我有两个模型,user & order,一个用户可以有多个订单。所以我可以使用GET /users/{id}/orders 来获取属于该用户的所有订单。

我想知道如何向 HTTP 请求添加查询参数。例如GET /users/{id}/orders?terminated=true

数据库中没有terminated这个字段,我只存了terminatedTime,所以我也需要计算一下。

我怎样才能做到这一点?

【问题讨论】:

    标签: loopbackjs strongloop


    【解决方案1】:

    您应该尝试使用where filter 进行查询。如果您有一个名为 terminated 的布尔字段,则以下内容会起作用: /users/{id}/orders?filter={"where":{"terminated" : true}}

    假设 terminateTime 是一个 Date 字段,下面的 URL 应该会找到一个 terminateTime 为 2016 年 3 月 16 日之后的用户的订单。

    /users/{id}/orders?filter={"where":{"terminatedTime" : {"gt": "2016-03-16T00:00:00.000Z"}}}

    注意:我曾使用 StrongLoop API Explorer 在我的示例应用程序上尝试类似的查询。根据您使用它的位置,可能需要也可能不需要双引号。

    【讨论】:

    • 我不必在 db 中填写名为 terminated 的字段。我只有终止时间,但在我的情况下比较不起作用,因为我只需要检查它是否有价值。
    • 这可能有效:/users/{id}/orders?filter={"where":{"terminatedTime" : {"neq": null}}}
    【解决方案2】:

    如果您尝试访问模型中的查询字符串,这将起作用。

    var loopback = require('loopback');
    
    module.exports = function(User) {
    var findOne = User.findOne;
    
    User.findOne = function(filter, cb) {
        var context = loopback.getCurrentContext(),
            terminated = context.active.http.req.query.terminated;
    
            //order processing logic
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-09
      • 2018-06-03
      • 1970-01-01
      • 2014-11-28
      • 2021-11-16
      相关资源
      最近更新 更多