【问题标题】:Querying MySQL with Node.JS and display results in webpage使用 Node.JS 查询 MySQL 并在网页中显示结果
【发布时间】:2014-05-04 15:05:34
【问题描述】:

我的目标是使用 Node.JS 查询 MySQL 以获得更好的交互性。我的查询是一个简单的SELECTJOINs。我设法构建了一个在控制台中显示结果的脚本,但是在网页中显示它时我有点卡住了。这是我的代码:

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 内容的后端服务器,并且与互联网/用户没有直接连接。

标签: javascript php jquery mysql node.js


【解决方案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。我的解决方案是使用:

最后,重新启动计算机以应用新安装。

  • 在您的 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);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多