2014-05-18 64 views
0

我想從使用nodejs的啓用PostGIS的PostgreSQL數據庫中獲得一個隨機幾何,但是當我嘗試甚至執行第一個查詢時,爲了在數據集中獲得'max'自動生成的順序標識,它會拋出上述錯誤。我意識到錯誤是因爲它期望一個字符串而不是一個數值,但由於'gid'字段是數字,我不知道如何解決這個問題。node.js和PostgreSQL查詢 - 拋出新的TypeError('第一個參數必須是字符串或緩衝區');

任何幫助解釋問題/修復它,所以我可以從數據庫中獲得我的隨機對象將是非常有益的。提前致謝。

var db = new pg.Client(conString); 
db.connect(); 

function getRandObj(){ 
    var max = db.query(" SELECT MAX(`gid`) FROM `buildings` "); 
    //var min = db.query(" SELECT MIN(`gid`) FROM `buildings` "); 
    //var random = mt_rand(min , max); 
    //var result = db.query(" ST_AsGeoJSON(geom) FROM `buildings` WHERE `gid` >= random LIMIT 0,1 "); 
    //return result 
} 

回答

1

我還沒有搞砸node.js太多,但是,我已經嘗試了一點。看看你的代碼在這裏:

var max = db.query(" SELECT MAX(`gid`) FROM `buildings` "); 

我看到一些潛在的問題。首先,反引號。我認爲他們是一個錯誤。更改查詢閱讀:

var max = db.query(" SELECT MAX(gid) FROM buildings "); 

或者,如果你真的想看到在那裏的報價,你應該用「名」引號,如:

var max = db.query(' SELECT MAX("gid") FROM "buildings" '); 

的第二件事就是返回值。我不認爲你會得到那樣的直接回報。你有沒有嘗試過這樣的事情:

var max = -1; 
q = db.query(' SELECT MAX("gid") FROM "buildings" as mx '); 

q.on('row', function (row) { 
    console.log(row); 
    max = row.mx; 
}; 
console.log("max is %d", max); 

-g

+0

謝謝。我只是剛剛開始使用節點,並且一直在努力讓我的頭腦變得圓滿。刪除反引號將我的查詢問題排除在外,我認爲你的回報是正確的,但我將不得不按照它的外觀做更多的研究。再次感謝。 – hansolo

相關問題