[英]Catch SQL error in Node.js
我已將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中做到這一點?
您可以在查詢對象上添加error
事件處理程序,以在查詢執行期間捕獲錯誤:
query.on('error', function(err) {
console.log('Query error: ' + err);
});
函數client.query
具有三個參數:( (query, params, function (err, result){})
。
第三個給您回調,以提供查詢執行期間的錯誤上下文以及結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.