Node.js(Openshift)表示响应不起作用

我正在使用OpenShift和Node.js我试图得到每个结果的平均评分,但我不能得到响应工作,即使控制台报告正确。 我得到3.9454323到控制台,但是当我git localhost:3002 / getM / 1的响应是空白的。

app.get('/getM/:movieId', function(request,response) { var movieId = request.params.movieId; var connection = mysql.createConnection({ host: process.env.OPENSHIFT_MYSQL_DB_HOST || 'localhost', user: process.env.OPENSHIFT_MYSQL_DB_USERNAME || 'root', password: process.env.OPENSHIFT_MYSQL_DB_PASSWORD || '', port: process.env.OPENSHIFT_MYSQL_DB_PORT || '3306', database: 'test' }); connection.connect(function (err) { if (err) { console.error('error connecting: ' + err.stack); response.send("error connecting to database"); return; } console.log('connected as id ' + connection.threadId); }); connection.query('SELECT * FROM `ratings` WHERE `movieId` = ?',[movieId], function(err, result) { if (err) { response.send(err); } var sum = 0; result.forEach(function(movie) { sum += movie["rating"]; console.log(sum); }); console.log(sum/result.length); response.send(sum/result.length); }); }); 

您正在将一个数字parameter passing给response.send() 。 以下是快递文档的内容:

res.send([机构])

发送HTTP响应。

body参数可以是一个Buffer对象,一个String,一个对象或者一个Array。

请参阅: http : //expressjs.com/api.html

尝试这个:

 response.send( "" + sum/result.length ); 

编辑:顺便说一句,如果您使用Express版本的旧版本,然后expression可能会试图解释为HTTP状态代码的数字。 我不确定用浮点数值expression什么,但在任何情况下,这显然不是你想要的。

最后,当一个数字没有任何前面提到的身体给出,那么一个响应正文string被分配给你。 例如200会回应将文本“OK”,404“未find”等。

请参阅: http : //expressjs.com/3x/api.html#res.send