Node.js不从浏览器执行DB功能

时间:2014-05-11 01:30:43

标签: javascript database node.js

我已经通过代理mod安装了Apache服务器的Node.js服务器,它启动正常。当我从控制台调用server.js文件时:node /var/www/project/node/server.js我收到正在运行的通知消息:"确定,服务器正在运行"

当我进入浏览器并指向server.js http://example.com/node/时,我获得状态200并且它可以正常工作。

问题是,函数 test 只有在我从控制台启动server.js时才会执行,但是当我从浏览器或通过AJAX调用请求server.js时,那么函数 test 未执行。我注意到通过数据库条目。

非常感谢您的反馈。我的代码如下:

var http=require('http');
var mysql = require('mysql');
var util = require('util');
var url = require('url');

var connection = mysql.createConnection({
   host     : 'localhost',
   user     : 'xxx',
   password : 'xxx',
   database : 'db_test',  //mysql database to work with (optional)
});
connection.connect(); //connect to mysql

var server=http.createServer(function(req,res){
     res.end('Connected');
});


server.on('listening',function(){
    console.log('ok, server is running');
});

server.listen(9000);



function test(){
    var s = new Date().getTime();
    connection.query('INSERT INTO table_test.emails (email) VALUES ("'+s+'")',function(err, result) {});
}

test();

感谢。

1 个答案:

答案 0 :(得分:1)

app.js中的代码在使用node /var/www/project/node/server.js启动服务器时运行(与PHP不同,整个文件为每个请求运行)。您告诉节点侦听端口9000并在收到请求时执行createServer回调中的任何内容。因此,您需要在test()回调中调用createServer来使其正常工作。

var server=http.createServer(function(req,res){
  test();
  res.end('Connected');
});