我有以下使用node-postgres的代码:
var client = new pg.Client(conString);
client.connect(function(err) {
if(err) {
throw new Error(console.error('could not connect to postgres '+ err));
}
});
client.query('select * from public.spatial_ref_sys', function(err, result){
console.log('ffdafda');
throw new Error('kokpokopko');
});
我认为当这段代码执行时,'ffdafda'将被打印到屏幕上,并且会抛出错误消息'kokpokopko'。我甚至在断点中插入了一个从未在调试器中断开的断点。由于这些事情永远不会发生,我假设从不调用回调。
为了获得回调,我需要某种选项吗?我正在阅读文档而我什么也没看到。
重要的是要注意调用client.query。我通过检查它的返回值证明了这一点。
非常感谢!
答案 0 :(得分:1)
我知道这已经有10个月了,但是这个只是咬我,所以我发布了解决方案。
如果抛出错误或收到行,则只会触发查询的回调。在我的特定情况下,我只使用“插入”查询。我得到的结果是我的回调从未被触发(如果提供),并且“错误”和“行”事件也从未被触发。我要解雇的唯一事件是“结束”。我建议以下解决方案:
pg.connect(conString, function(err, client, done) {
if(err)
return console.error('error fetching client from pool', err);
var q = client.query("INSERT INTO wddata (id, type, word) VALUES('456','n','a value')", function(err, result) {
//this callback never fires for some queries
if(err)
return console.error('error running query', err);
console.log(result.rows[0].number);
});
q.on('end', function() {
//This event callback always fires
console.log('Finished with query');
});
done();
});