【发布时间】:2015-08-19 04:58:54
【问题描述】:
我设置了一个 pSQL 表,要求某些数据具有唯一值,我调用该函数以插入该数据:
CREATE OR REPLACE FUNCTION create_location(
name text,
latitude numeric,
longitude numeric,
logo_url text = '')
RETURNS void AS $$
INSERT INTO "PartySpot".locations (name, latitude, longitude, logo_url)
VALUES (name, latitude, longitude, logo_url);
$$ LANGUAGE SQL VOLATILE STRICT;
我使用 node.js/express 从端点调用它:
pg.connect(connectionString, function(err, client, done) {
var query = client.query("SELECT * FROM create_location($1,$2,$3,$4)",
[req.body.name,
req.body.latitude,
req.body.longitude,
req.body.logo_url]
);
query.on('row', function(row) {
results.push(row);
});
query.on('end', function(row) {
client.end();
return res.json(results);
});
if(err) {
console.log(err);
}
});
当密钥是唯一的时,这可以正常工作,但在测试它不是的条件时,而不是if (err) 块捕获的错误,它会无人处理并使服务器崩溃。
处理此类事件的正确方法是什么?有没有办法在 SQL 中做到这一点?
【问题讨论】:
标签: sql node.js postgresql error-handling