2015-10-20 92 views
2

我正在使用OpenShift和Node.js 我想獲得每個結果的平均評分,但我不能 得到響應工作,即使控制檯報告正確。 我得到3.9454323到控制檯,但是當我git localhost:3002/getM/1的響應是空白的。Node.js(Openshift)快速響應不起作用

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); 
    }); 
}); 
+0

您是否獲得了'作爲連接ID(..)'信息,即你​​正確連接到數據庫? –

+0

是的,我甚至可以得到結果sum/result.length。如果我將響應更改爲字符串「測試」,我得到響應。這是一個內容類型的問題? – PoolHallJunkie

+0

你的描述有點混亂;確切的問題是什麼? console.log是正確的,但響應是空白的?你有沒有嘗試發送一個字符串作爲迴應,看看它是否有效? –

回答

0

您正在將一個數字參數傳遞給response.send()。這裏的快遞文件說什麼:

res.send([正文])

發送HTTP響應。

body參數可以是Buffer對象,String,對象或 數組。

見:http://expressjs.com/api.html

試試這個:

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

編輯: 順便說一句,如果你使用快遞的是舊版本,然後快遞可能試圖解釋數作爲HTTP狀態碼。我不確定什麼表達方式會對浮點值做什麼,但無論如何,這顯然不是你想要的。

最後,如果在沒有任何前面提到的 正文的情況下給出數字,則會爲您指定響應正文字符串。例如 200會響應將文本「OK」,404「未找到」等。

見:http://expressjs.com/3x/api.html#res.send