节点数据库查询无效;

时间:2017-10-15 16:19:22

标签: mysql node.js orm

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

我正在使用Ubuntu服务器,它也有MySQL,Apache和Linux。 Tomcat安装在它上面 - 所以我希望Node应用程序能够侦听端口3000; (Apache在端口80上,& Tomcat在端口8080上)。

我已经安装了MySQL驱动程序+ ORM模块,&它们位于'node_modules'文件夹中 - 这是我项目的子文件夹。 用户名简单地设置MySQL:“user”&密码:“密码”

当我运行应用程序时,我收到错误消息:
“连接错误:错误:连接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/');

3 个答案:

答案 0 :(得分:0)

ECONNREFUSED错误通常在以下情况下发生:

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

考虑到您在localhost上运行,其中一些可能无法应用。

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

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

答案 1 :(得分:0)

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

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

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

event.target

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

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

答案 2 :(得分:0)

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

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

实际应该是:

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

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