使用 Node.JS 查询 MySQL 并在网页中显示结果
Posted
技术标签:
【中文标题】使用 Node.JS 查询 MySQL 并在网页中显示结果【英文标题】:Querying MySQL with Node.JS and display results in webpage 【发布时间】:2014-05-04 15:05:34 【问题描述】:我的目标是使用 Node.JS 查询 mysql 以获得更好的交互性。我的查询是一个简单的SELECT
和JOIN
s。我设法构建了一个在控制台中显示结果的脚本,但是在网页中显示它时我有点卡住了。这是我的代码:
var mysql = require('mysql');
var mySqlClient = mysql.createConnection(
host : 'server',
user : 'login',
password: 'pwd',
database: 'db'
);
var selectQuery = 'SELECT fields FROM table t1\
INNER JOIN table t2\
ON t1.field = t2.field';
mySqlClient.query(
selectQuery,
function select(error, results, fields)
if(error)
console.log(error);
mySqlClient.end();
return;
if(results.length > 0)
console.log(results);
else
console.log('No data');
mySqlClient.end();
);
将其包含到网页中的最佳方法是什么?我需要用 Node.JS 创建一个 httpServer 吗?
非常感谢您的帮助!
编辑 我想在使用 Zend 框架设计的 php 应用程序中使用 Node.JS。 Node.JS 应用程序不会是我项目的唯一应用程序。
【问题讨论】:
看看 express.js 作为网络服务器前端。应该很容易设置。 嗨!谢谢你的评论。我已经有一个前端网络服务器。这只是 Zend Framework 应用程序的一部分。我的目标是在现有网页中包含结果。 你必须从 nodejs 到你当前的前端服务器进行某种数据传输,因为两者都基于不同的技术,因此不能直接包含在内。 “最简单”的方法是让节点通过自己的服务器提供数据。为此,您可以创建自己的代码或使用 express.js 之类的代码。 我应该使用 express.js 以 JSON 格式提供数据,以便将结果包含在网页中吗?请原谅我缺乏知识,我被介绍给 Node.JS 才一个星期。我的 Google 研究将我带到了本教程 (pixelhandler.com/posts/…),这是您的意思吗? 看起来差不多。但是,它们似乎提供了一些来自 nodejs 的 html,而您并不需要这些 HTML。您的 nodejs 服务器将只是您的 PHP 内容的后端服务器,并且与互联网/用户没有直接连接。 【参考方案1】:最简单的方法是使用节点框架。喜欢express。
你会做类似的事情
/*** omitting generic code for clarity ***/
app.get('/yourpage',function(req,res)
//On request of this page initiating sql query. Assumes that the object initialization is done above.
mySqlClient.query(
selectQuery,
function select(error, results, fields)
if(error)
console.log(error);
mySqlClient.end();
//render the template with error to be alerted
res.render('tempaltefile',data:null,error:error);
if(results.length > 0)
//console.log(results);
//render the template with fetched data
res.render('tempaltefile',data:results,error:null);
else
//console.log('No data');
//render the template with empty data alert
res.render('tempaltefile',data:null,error:"no data");
mySqlClient.end();
);
);
回复cmets
请提及您正在使用这个与 ph 代码一起使用。我认为您必须将节点代码构建为 api 并在 php 端使用它。
【讨论】:
感谢回复,这是否与现有的前端应用程序(例如 Zend Framework 应用程序)兼容?如何在 ZF 中包含 express.js?【参考方案2】:我的情况和你一样,因为 NodeJS 我无法连接到 MySQL Zend。我的解决方案是使用:
Node-mysql 插件
(安装到 nodejs 控制台的命令:npm install mysql
)
安装 MySQL ODBC 连接器 (http://dev.mysql.com/downloads/connector/) 插件。
最后,重新启动计算机以应用新安装。
在您的 server.js 文件中,您可以使用此代码连接到您的 HostDB:
var app = require('http').createServer(handler), mysql = require('mysql'), connectionsArray = [], connection = mysql.createConnection( host: 'localhost', user: 'USERNAME MYSQL ', 密码: 'PASSWORD MYSQL', 数据库: 'NAME MYSQLDATABASE', 端口: 3306 );
【讨论】:
【参考方案3】:app.post('/qr', function(req, res)
console.log("Check QR code.");
let now = moment().format('MMMM Do YYYY, h:mm:ss a');
let subnow = now.substr(0, 8);
let subnowwild = subnow + "%";
connection.query("select exists (select * from visit where timeIn like ?)", subnowwild, function(err, result)
if (err) throw err;
console.log(result);
if(result = 0)
res.redirect(307, '/savedata');
else
res.redirect(307, '/updatedata');
);
);
所以我想看看使用 mysql 获取数据时的响应是什么样的,这个网页出现了,但没有显示我正在寻找的答案。
如果您希望查询将数据作为 json 响应返回,也可以使用 res.send(result);
。
【讨论】:
以上是关于使用 Node.JS 查询 MySQL 并在网页中显示结果的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 结果来自 html 中的 node.js,由 react.js