javascript - node.js 和 PostgreSQL 查询 - 抛出新的 TypeError ('first argument must be a string or Buffer' );

标签 javascript node.js postgresql postgis

我正在尝试使用nodejs从支持PostGIS的PostgreSQL数据库中获取随机几何图形,但是当我尝试执行第一个查询时,为了获取数据集中自动生成的“最大”顺序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
}

最佳答案

我并没有过多地使用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

关于javascript - node.js 和 PostgreSQL 查询 - 抛出新的 TypeError ('first argument must be a string or Buffer' );,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23720774/

相关文章:

sql - 我如何在 Postgres 中优化这个 SQL 查询?

postgresql - 不能在 postgres 中删除函数

javascript - 连接到 fancytree 的可排序在拖放时忘记了其位置

javascript - 输入时插入代码

javascript - 无法在 JavaScript 中启用按钮

node.js - 如何在 React Native 中使用 Azure PubSub?

node.js - Node soap,使用受密码保护的 WSDL

javascript - 读取流不执行触发/捕获错误

node.js - 无法删除错误 CRUD API(NodeJS、MongoDB、Express)

postgresql - 提高我的 psql 查询性能