Javascript 如何使用node mysql/node.js一次获取一行?

Javascript 如何使用node mysql/node.js一次获取一行?,javascript,mysql,node.js,node-mysql,Javascript,Mysql,Node.js,Node Mysql,我有一些PHP代码需要移植到node.js/Javascript,但我不知道如何正确地做到这一点:一次只获取一行 我有一个查询,结果是一个巨大的数据集;我只需要一些结果;但我不知道有多少 在PHP中,我只是执行查询,然后逐行提取行,直到满足条件为止。 php伪代码: $sql="select price, totvol from depth where.. order by price desc"; $result = mysql_query($sql) or die(mysql_error(

我有一些PHP代码需要移植到node.js/Javascript,但我不知道如何正确地做到这一点:一次只获取一行

我有一个查询,结果是一个巨大的数据集;我只需要一些结果;但我不知道有多少

在PHP中,我只是执行查询,然后逐行提取行,直到满足条件为止。 php伪代码:

$sql="select price, totvol from depth where.. order by price desc";

$result = mysql_query($sql) or die(mysql_error());  //massive dataset
while ($row=mysql_fetch_assoc($result) and some condition) {
    do stuff until condition is met     
}
我不知道如何在mysql节点中实现这一点。我可以在sql查询中添加一个LIMIT 1,并每次进行一个新查询,但是如何获得有序列表中的下一行呢?任何提示都将不胜感激

如果有帮助,这是实际代码:

$sql='';
if ($type=="bid") $sql="select price, totvol from depth where price>=$price order by price asc";
elseif ($type=="ask") $sql="select price, totvol from depth where price<=$price order by price desc";
else echo "unknown type\n";
if ($sql!='') {
    $result = mysql_query($sql) or die(mysql_error());
    while ($row=mysql_fetch_assoc($result) and $amount_int>0) {
        $newamount=max($row["totvol"]-$amount_int,0);
        $amount_int-=$row["totvol"];
        $sql2="update depth set totvol=$newamount where price=".$row["price"];
        $result2 = mysql_query($sql) or ie(mysql_error());                              
    }
}
$sql='';
如果($type==“bid”)$sql=“选择价格,从深度计算totvol,其中价格>=$price order by price asc”;

elseif($type==“ask”)$sql=“选择price,totvol from depth where price在节点中获取太多行时是否有任何错误?”?内存消耗问题?我不明白为什么会有这么大的不同。当您从PHP运行查询时,您还可以检索所有行,使用
mysql\u fetch\u assoc
只是一种循环它们/移动内部指针的方法。@bfarettoi我实际上还没有尝试过;结果证明你是对的;在php中,我应该使用mysql\u unbuffered\u query()。Doh。所以我想它可以工作;但由于这段代码正在移动到内存受限的VPS;我仍然想优化它。我相信这就是你想要的:事实上;不,这不是我想要的。它只会减少结果的流动。我没有办法阻止它。而且它实际上缺少了我在循环中仍然需要的db连接。它还说:“另外,您可能有兴趣知道,当前不可能对单个行列进行流式处理,它们将始终被完全缓冲。”:看起来我将不得不使用LIMIT并生成丑陋的代码:(我明白了。我从未使用过无缓冲查询,但现在我知道了,我会开始考虑。我的建议是:首先,尝试获取整个结果集。如果这会导致资源/性能问题,请使用限制,但
limit 1
将是我的最后一个选择。尝试使用更高的数字来检索合理数量的结果,这样您就可以在极少数情况下,您需要发出新查询。