PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

NodeJS और Postgres का उपयोग करके लेनदेन श्रृंखला में वैकल्पिक INSERT विवरण

मैन्युअल लेन-देन प्रबंधन एक विश्वासघाती रास्ता है, उससे दूर जाने की कोशिश करें!;)

पीजी-वादा की सहायता से इसे ठीक से करने का तरीका यहां दिया गया है:

function(req, res) {
    db.tx(t => { // automatic BEGIN
            return t.one('INSERT_1 VALUES(...) RETURNING id', paramValues)
                .then(data => {
                    var q = t.none('INSERT_2 VALUES(...)', data.id);
                    if (req.body.value != null) {
                        return q.then(()=> t.none('INSERT_3 VALUES(...)', data.id));
                    }
                    return q;
                });
        })
        .then(data => {
            res.send("Everything's fine!"); // automatic COMMIT was executed
        })
        .catch(error => {
            res.send("Something is wrong!"); // automatic ROLLBACK was executed
        });
}

या, यदि आप ES7 सिंटैक्स पसंद करते हैं:

function (req, res) {
    db.tx(async t => { // automatic BEGIN
            let data = await t.one('INSERT_1 VALUES(...) RETURNING id', paramValues);
            let q = await t.none('INSERT_2 VALUES(...)', data.id);
            if (req.body.value != null) {
                return await t.none('INSERT_3 VALUES(...)', data.id);
            }
            return q;
        })
        .then(data => {
            res.send("Everything's fine!"); // automatic COMMIT was executed
        })
        .catch(error => {
            res.send("Something is wrong!"); // automatic ROLLBACK was executed
        });
}

अपडेट करें

ES6 जनरेटर को ES7 async . से बदला गया /await उदाहरण में, क्योंकि pg-promise ने संस्करण 9.0.0

. से ES6 जनरेटर का समर्थन करना बंद कर दिया है


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक समारोह में चयन या INSERT दौड़ की स्थिति के लिए प्रवण है?

  2. PostgreSQL में लेनदेन अलगाव

  3. ActiveRecord::AdapterNotनिर्दिष्ट डेटाबेस कॉन्फ़िगरेशन एडेप्टर निर्दिष्ट नहीं करता है

  4. पोस्टग्रेएसक्यूएल बी-ट्री इंडेक्स पर नोट्स

  5. केवल SQL का उपयोग करके पूर्व-अद्यतन स्तंभ मान लौटाएं