我刚刚开始使用Node.js而且我很困惑如何用节点收集数据库查询的结果。
如果我们考虑在PHP中如何工作,我们有类似的东西:
(after setting the connection $connection)
$query="select field_x from Table where field='something'";
$result=@ mysqli_query($connection, $query);
if(mysqli_num_rows($result)>0)
{
$row=@ mysqli_fetch_array($result);
}
$data='';
if(isset($row['field_x']))
{
// query result is HARVESTED
$data=$row['field_x'];
}
如果查询结果不为null,则可以在查询块中的代码中的每个位置使用$ data(= $ row ['field_x'])。
在节点中是否有一种非常简单直接的方式(类似于PHP方式)。
基本上我想用全局范围定义一个arrray / variable并将其传递给connection-query块并将该数组/变量放入查询结果中,如:
var Array=[]; // global scope
var mysql = require('mysql');
var connection = mysql.createConnection({some_stuff});
connection.connect();
var queryString = 'SELECT field_x FROM Table';
connection.query(queryString, function(err, rows, fields) {
if (err) throw err;
for (var i in rows) {
Array.push(rows[i].field_x));
}
});
connection.end();
有任何建议/意见吗?
问候。
答案 0 :(得分:0)
看起来您在查询完成运行之前结束了连接&响应。尝试将connection.end()放在回调中。
答案 1 :(得分:0)
我感觉有点傻到回答我自己的问题......无论如何。
我的问题是,是否有类似PHP的方法从数据库中获取数据。 问题在于,由于PHP不是异步的,因此在正常的执行流程中查询数据库,这意味着必须等到数据库服务器响应才能执行下一行代码。 在node.js的异步世界中,查询数据库涉及回调,这些回调不在同步执行流程中。
因此,在这种情况下,尝试实现类似的PHP代码将失败,因为对数据库查询意味着设置的数组的任何引用同步发生,同时查询数据库是异步任务,意味着它将在同步流完成执行后的某个时刻执行。