使用 LoopBack 返回总和
Returning sum using LoopBack
我找不到使用 LoopBack 执行此操作的方法,虽然有人可能会提供帮助,或者为我提供 alternative/recommended 方法来执行此操作。
我有一个 'Traffic' 模型,如下所示:
{
"fromTime": "string",
"toTime": "string",
"trafficTypeId": 0,
"totalPackets": 0,
"totalSize": "string",
"id": 0
}
现在,每个模型都有一定的间隔,比如从16:00到16:05,它会保留这段时间内处理的数据包总数和大小。
我需要显示一个图表,它改变了它的显示 hourly/daily/weekly 等等
我该怎么做才能避免在客户端进行求和,因为我担心可能会出现性能问题(当尝试使用 5 分钟的时间间隔对一个月求和时)?相反,我想制作一个带有 2 个参数的函数:startTime
和 endTime
,以及 returns 1 个对象,其中包含这次的数据包总和和总大小?
我看过remote methods,但它似乎不符合我的需要。我理解错了吗?
有没有其他推荐的方法可以试试?
编辑:是否可以这样调用:
traffic.find({'where': {`fromTime': {gt: SOME_TIME}, 'toTime': {lt: SOME_OTHER_TIME } }); // (using AngularJS)
并将返回的数据传递给我将编码的远程方法,以总结我想要的值?
远程方法可以解决这个问题,您认为为什么不行?无需调用内置查询方法,只需使用 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' }
});
};
我找不到使用 LoopBack 执行此操作的方法,虽然有人可能会提供帮助,或者为我提供 alternative/recommended 方法来执行此操作。
我有一个 'Traffic' 模型,如下所示:
{
"fromTime": "string",
"toTime": "string",
"trafficTypeId": 0,
"totalPackets": 0,
"totalSize": "string",
"id": 0
}
现在,每个模型都有一定的间隔,比如从16:00到16:05,它会保留这段时间内处理的数据包总数和大小。
我需要显示一个图表,它改变了它的显示 hourly/daily/weekly 等等
我该怎么做才能避免在客户端进行求和,因为我担心可能会出现性能问题(当尝试使用 5 分钟的时间间隔对一个月求和时)?相反,我想制作一个带有 2 个参数的函数:startTime
和 endTime
,以及 returns 1 个对象,其中包含这次的数据包总和和总大小?
我看过remote methods,但它似乎不符合我的需要。我理解错了吗?
有没有其他推荐的方法可以试试?
编辑:是否可以这样调用:
traffic.find({'where': {`fromTime': {gt: SOME_TIME}, 'toTime': {lt: SOME_OTHER_TIME } }); // (using AngularJS)
并将返回的数据传递给我将编码的远程方法,以总结我想要的值?
远程方法可以解决这个问题,您认为为什么不行?无需调用内置查询方法,只需使用 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' }
});
};