【问题标题】:Node Database Query not working;节点数据库查询不起作用;
【发布时间】:2018-03-27 04:50:20
【问题描述】:

我对 NodeJS 编码完全陌生,所以为了让自己更具挑战性,我还尝试通过“node-orm2”使用 ORM(除非有人可以建议更简单的 orm 框架?)

我使用的是 Ubuntu 服务器,它还安装了 MySQL、Apache 和 Tomcat - 所以我希望 Node 应用程序监听端口 3000; (Apache 在 80 端口,而 Tomcat 在 8080 端口)。

我已经安装了 MySQL Driver + ORM 模块,并且它们正确地位于“node_modules”文件夹中 - 这是我项目的子文件夹。 MySQL 的设置很简单,用户名:“user”和密码:“password”

当我运行应用程序时,我收到错误消息:
“连接错误:错误:连接 ECONNREFUSED 127.0.0.1:3306”

哦 - 应用程序只是尝试将记录写入数据库“测试”,如果成功,它只是将消息“成功”返回给浏览器。

这是我目前的代码;

var http = require('http');
var orm = require('orm');
var message;

orm.connect('mysql://user:password@localhost/Test', function(err, db) {
  if (err) return console.error('Connection error: ' + err);

    var Test = db.define("test", {
        User      : String,
        Num   : Number,
        Address   : String,
        Phone   : Number,
        State   : String
      });
      var newRecord = {};
        newRecord.User = 'Username';
        newRecord.Num = Math.random();
        newRecord.Address = '10 Idiot St, Somewhere';
        newRecord.Phone = 12345678;
        newRecord.State = 'VIC';
        orm.create(newRecord, function(err, results) {
          if (err) return console.console.error('DBError: ' + err);
        });
        message = 'Success';
  });

  var server = http.createServer(function (req, res) {
      res.writeHead(200, {'Content-Type' : 'text/plain'});
      res.end('Response: ' + message);
  }).listen(3000, "192.168.0.127");

  console.log('Server running at http://192.168.0.127:3000/');

【问题讨论】:

  • 您的 3306 端口是否打开或被防火墙阻止?

标签: mysql node.js orm


【解决方案1】:

ECONNREFUSED 错误一般在以下情况下发生:

数据包已发送但返回错误结果(可能是防火墙,没有在正确的端口上运行服务。网络故障不太可能导致此错误,因为它表明“连接”已经做出但仅在之后,被拒绝)。

考虑到您在 localhost 上运行,其中一些可能不适用。

但是,您在特定网络适配器上侦听的 HTTP 服务器代码末尾的行可能不需要?

您确定您的服务正在运行吗?

【讨论】:

    【解决方案2】:

    我解决了我的问题...但后来发现我的 ORM 代码有一个新问题;

    虽然 MySQL 与 Apache、Tomcat、Node、PHP 等在同一台服务器上,但我忘记了我将 MySQL 配置为侦听其 IP(而不是侦听 LocalHost),因为我希望它能够响应请求来自其他机器;

    所以我的代码需要看起来像这样;

    orm.connect('mysql://user:password@192.168.0.127/Test', function(err, db)
    

    现在我的代码只是在这一行抛出一个错误,说“create”不是 ORM 的方法:

    orm.create(newRecord, function(err, results)
    

    【讨论】:

      【解决方案3】:

      虽然这不是 SQL 问题,但还应注意在我的代码中:

       orm.create(newRecord, function(err, results)
      

      实际上应该是:

      Test.create(newRecord, function(err, results)
      

      愚蠢的菜鸟错误,我试图使用连接对象添加记录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-12-01
        • 2015-11-15
        • 1970-01-01
        • 1970-01-01
        • 2018-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多