使用节点创建mysql查询

使用节点创建mysql查询,mysql,node.js,Mysql,Node.js,我刚开始使用Node.js,我一直在研究如何使用Node获取数据库查询的结果 如果我们考虑如何在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)

我刚开始使用Node.js,我一直在研究如何使用Node获取数据库查询的结果

如果我们考虑如何在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'];
}
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();
如果查询结果不为null,则可以在查询块的代码中的每个位置使用$data($row['field_x'])

是否有一种非常简单直接的方法(类似于PHP方法)在node中执行此操作

基本上,我想定义一个具有全局作用域的数组/变量,并将其传递给连接查询块,然后将查询结果放入该数组/变量中,如:

(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'];
}
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();
有什么建议吗


注意。

在查询运行和响应完成之前,您似乎正在结束连接。尝试将connection.end()放入回调中

我觉得回答自己的问题有点傻。。。无论如何

我的问题是,是否有类似于PHP的方法从数据库中获取数据。 因为PHP不是异步的,所以查询数据库是在正常的执行流中进行的,这意味着在执行下一行代码之前必须等待数据库服务器的响应。 在node.js的异步世界中,查询数据库涉及回调,这些回调不在同步执行流中


因此,在这种情况下,尝试实现类似的PHP代码将失败,因为当查询数据库是一项异步任务时,对数据库查询结果所要设置的数组的任何引用都是同步发生的,这意味着它将在同步流完成执行后的某个点执行

你到底看到了什么?这看起来基本上是正确的,这取决于你接下来要做什么。嗨,保罗。其思想是在connection.end()之外使用数组的内容。但是,数组是空的。