मुझे सही आउटपुट मिल रहा है, और वास्तव में, इन दो संचालन को एक लेनदेन इकाई के रूप में माना जा रहा है; जहां कोई विफल रहता है, दोनों विफल हो जाते हैं।वादे लेनदेन के साथ अनुबंध
इस कोड उदाहरण में: मैं
के लेन-देन कर रहा हूँ(1) सम्मिलित (2) को अद्यतन
तरह से मैं यह दृष्टिकोण तो फिर अंदर मेरे db संचालन घोंसला है। मेरा सवाल यह है कि यदि यह कोड दुर्घटना से सही है? मैं वादे और knex के लिए नया हूँ।
knex.transaction(function(t) {
knex('foo')
.transacting(t)
.insert({id:"asdfk", username:"barry", email:"[email protected]"})
.then(function() {
knex('foo')
.where('username','=','bob')
.update({email:"[email protected]"})
.then(t.commit, t.rollback)
})
})
.then(function() {
// it worked
},
function() {
// it failed
});
यह काम करता है, लेकिन मुझे लगता है कि मैं अभी भी कुछ गलत कर रहा हूं। टिप्पणियों की तलाश में
आप 1 की कोशिश कर सकते हैं) कुछ console.logs जोड़ने जहां '// यह worked' और'// यह विफल रहा है 'टिप्पणियां हैं, और 2) किसी भी तरह विफल होने के लिए सम्मिलित कथन को मजबूर करना? आपके वर्तमान घोंसले के साथ, t.rollback केवल तभी कॉल किया जाता है जब अद्यतन विफल हो जाता है, इसलिए मुझे लगता है कि अगर डालने में विफल रहता है तो यह सही काम नहीं करेगा। – user3374348