我正在測試一個構建在express框架上的nodeJS服務器。節點應用程序的響應沒有任何迴應,但應返回數組
當向服務器發送請求時,服務器應該以數組的形式發回一些數據。相反,它將發回''
。
,我試圖通過測試如下:
it('should send postgres data to the server', function(done) {
request(app)
.post('/chart')
.send({min:"1",max:"100",arrayLength:"12"})
.expect(200, sqlData)
.end(function(err, res){
if(err) {
done(err);
} else {
done();
}
});
});
注意SQLDATA等於發送響應應該是什麼。
當路由器收到它下面的POST請求:
router.post('/', function(req, res) {
res.send(randomSqlTableSelector(req.body.min,req.body.max,req.body.arrayLength));
});
我已經檢查了req.body.min,max和arrayLength都是我期望他們成爲數字。
因此,這個問題很可能在我的功能randomSqlTableSelector
,其中,無論出於何種原因,路由器的內部調用時,簡單的返回空引號''
的功能如下:
function randomSqlTableSelector(min,max,arrayLength) {
var filledArray = [];
pg.connect(conString, function(err, client, done) {
if(err) {
return console.error('error fetching client from pool', err);
}
client.query('SELECT cell1 FROM random AS retrievedNumber;', function(err, result) {
var psqlData = result.rows;
for (i in psqlData) {
filledArray.push(psqlData[i]["cell1"])
}
return filledArray
});
});
}
發生這種情況,因爲你的數據庫連接的東西是異步的,所以你的randomSql功能實際上是在返回前,你認爲它是。 – 2014-10-02 20:08:09