簡體   English   中英

在Node.js中捕獲SQL錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM