【发布时间】:2014-03-01 13:06:21
【问题描述】:
我正在使用 node.js,我是 node.js 和 javascript 的菜鸟。
我的服务器正在使用 express 模块,客户端和服务器以 'JSON string' 格式通信。
//server.js
var express = require('express');
var app = express();
app.use(express.json());
app.use(express.urlencoded());
app.post('/', function(request, response)
{
switch(req.body['SERVICETYPE'])
{
case 'TEST':
console.log("test queried : ["+JSON.stringify(request.body)+"]");
response.send(request.body);
response.end();
break;
case 'TEST_USING_HANDLER':
console.log("test with handler queried : ["+JSON.stringify(request.body)+"]");
require('./testhandler.js).TryTest(requst, response);
break;
}
});
无法使用本机“测试”类型的服务。
因为服务器必须返回一个response给客户端,但是很多长时间的take函数必须使用handler来发送一个response。(如DB Access)
接下来是我的 testhandler.js
//testhandler.js
function TryTest(req, res)
{
var mysql = require('mysql');
var connection = mysql.createConnection({
hostname : 'localhost',
user : 'gameserver',
password : 'game0',
database : 'game0'
});
connection.connect();
console.log("findusername = "+req.body['name']);
connection.query('select * from USE_USERS where name = '+req.body['name'], function(err, rows, cols)
{
if(err) throw err;
var rtv;
if(rows[0])
{
rtv = {};
rtv['id'] = rows[0]['id'];
rtv['name'] = rows[0]['name'];
rtv['passwd'] = rows[0]['passwd'];
}
TestReturn(rtv, req, res);
});
}
function TestReturn(rtv, req, res)
{
res.send(JSON.stringify(rtv));
res.end();
}
并且代码可能感觉是伪的(我将它编码为 stackoverflow 编辑器)。
但是这种情况,它返回错误
对象 # 没有方法“发送”(在 TestReturn 函数上)
我不能在 app.post 的范围之外调用 res.send() 或 res.end()事件处理函数。
我认为这可能是因为 javascript 没有用户控制类型系统(如类型转换,作为关键字)。
如何在 node.js 上编写事件驱动代码?
【问题讨论】:
-
只是一个小问题——TEST-USERHANDLE|R 中的
requst错字——除此之外我还没有看到任何内容
标签: javascript node.js express