【问题标题】:Returning sum using LoopBack使用 LoopBack 返回总和
【发布时间】:2016-03-15 00:45:11
【问题描述】:

我找不到使用 LoopBack 执行此操作的方法,尽管有人可能会提供帮助,或者为我指出另一种/推荐的方法来执行此操作。

我有一个看起来像这样的“流量”模型:

{
  "fromTime": "string",
  "toTime": "string",
  "trafficTypeId": 0,
  "totalPackets": 0,
  "totalSize": "string",
  "id": 0
}

现在,每个模型都有一定的时间间隔,比如从 16:00 到 16:05,它会保留这段时间处理的总数据包和大小。

我需要显示一个图表,将其显示方式从每小时/每天/每周等更改。

我将如何做到这一点,以便在客户端不会发生求和,因为我担心可能会出现性能问题(尝试使用 5 分钟间隔对一个月求和)?相反,我想创建一个接受 2 个参数的函数:startTimeendTime,并返回 1 个对象,其中包含这次的数据包总和和总大小?

我查看了remote methods,但它似乎不符合我的需求。我理解错了吗?

还有其他推荐的方法吗?

编辑:是否可以这样调用:

traffic.find({'where': {`fromTime': {gt: SOME_TIME}, 'toTime': {lt: SOME_OTHER_TIME } }); // (using AngularJS)

并将返回的数据传递给我将编码的远程方法,以总结我想要的值?

【问题讨论】:

  • 对于图表的结果生成,每小时/每天/每周有什么用?而且我在您的模型中看不到时间戳。
  • 实际上并没有使用时间戳,属性 fromTime 和 toTime 是纪元时间。这只是为了显示过滤器。每小时/每天...视图应该显示在我的网络应用程序的图表上,显示已处理数据的统计信息。我已经更新了帖子

标签: loopbackjs strongloop


【解决方案1】:

远程方法可以解决这个问题,为什么你认为它不会呢?无需调用内置的查询方法,只需使用 Node 语法来查询您的数据库并在后端进行汇总。您无需先调用数据,然后将该数据从客户端发送回远程方法,只需将其全部打包到一个远程方法中即可:

traffic.js 里面是这样的:

module.exports = function(Traffic) {

  Traffic.getGraphData = function (fromTime, toTime, cb) {

    let filter = {
      where: {
        fromTime: {gt: fromTime},
        toTime: {lt: toTime}
      }
    };

    Traffic.find(filter, function(err, trafficResults) {

      if(err) return cb(err); // error out and return err msg to client

      let graphData = {
        // properties to support graph display
      };

      // loop on trafficResults to do Summation here
      // collect results inside graphData

      // return clean graphData to client
      cb(null, graphData);

    });

  }

  Traffic.remoteMethod('getGraphData', {
    accepts: [
      { arg: 'fromTime', type: 'number' },
      { arg: 'toTime', type: 'number' }
    ],
    returns: { arg: 'graphData', type: 'object' }
  });

};

【讨论】:

  • 使用远程方法是正确的。 @Brian 建议的流程对我来说很合适。远程方法可以包含带有自定义代码的 api 调用,以便满足您所需的输出。
  • 这看起来正是我所需要的,它让我走上了正轨!非常感谢!
猜你喜欢
  • 2017-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 2015-03-23
  • 2017-10-17
  • 1970-01-01
  • 2020-10-10
相关资源
最近更新 更多