我正在尝试使用nodejs从PostGIS启用的PostgreSQL数据库中获取随机几何,但是当我尝试进行第一次查询时,为了获得数据集中“max”自动生成的顺序ID,它会抛出以上错误。我认识到错误是因为它期望字符串而不是数字值,但由于'gid'字段是数字,我不知道如何解决这个问题。
任何帮助解释问题/修复它以便我可以从数据库中获取随机对象将非常有帮助。提前谢谢。
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
}
答案 0 :(得分: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