0

在 node.js 中,建议我们不要对数据库或任何其他地方使用阻塞调用。但是,如果我按照这条规则进行操作,我将面临带有 sql 数据库的 rest api 的问题。在 nosql 数据库中可能可以实现。

问题 :

我在数据库中有一个表,其中包含username,col1,column2,time列。我想要的其余api数据是这样的

{ 
  username:A,
  max(col1):123,
  deviation_column2: [{
       time:10:00,
       column2:54
     },
     { 
       time:10:05,
       column2:59
     }
  ]
},
{ 
  username:B,
  max(col1):123,
  deviation_column2: [{
       time:10:00,
       column2:54
     },
     { 
       time:10:05,
       column2:59
     }
  ]
}

我想生成rest api,它给我col1的平均值,以及column2随时间的标准偏差。

我可以通过对数据库的两次阻塞调用并合并数据来实现这一点,但在 Node.js 中这是不可取的,那么如何在不使用阻塞调用的情况下向我的客户端提供这种类型的休息响应?

我可以通过在用户名和时间组上使用 stdev 和 max 函数分别实现以下结果。

4

1 回答 1

1

您可以使用Fibers及其衍生物轻松实现此类结果。wait.for特别漂亮。使用这些工具,您可以在不阻塞事件循环的情况下运行对数据库的同步调用。

请注意,Fibers 有点争议,因为它们显着改变了您在 Node 中的思维方式,尽管使用它们并没有实际的缺点。

于 2013-09-30T10:54:32.727 回答