नोड.जेएस 7 पहले से ही एसिंक/प्रतीक्षा वाक्यविन्यास का समर्थन करता है, अगली लेनदेन में अगर एसिंक/प्रतीक्षा का उपयोग लेनदेन सक्षम नहीं होगा, तो मुझे इसका उपयोग कैसे करना चाहिए?Node.js 7 एसिंक/प्रतीक्षा के साथ अनुक्रमित लेनदेन का उपयोग कैसे करें?
उत्तर
let transaction;
try {
// get transaction
transaction = await sequelize.transaction();
// step 1
await Model.destroy({where: {id}, transaction});
// step 2
await Model.create({}, {transaction});
// commit
await transaction.commit();
} catch (err) {
// Rollback transaction if any errors were encountered
await transaction.rollback();
}
उपरोक्त कोड को नष्ट कॉल में एक त्रुटि है।
await Model.destroy({where: {id}, transaction});
लेनदेन विकल्प ऑब्जेक्ट का हिस्सा है।
उपरोक्त उत्तर तय - धन्यवाद – pkyeck
जवाब user7403683 द्वारा दिए गए async में अप्रबंधित लेन-देन (http://docs.sequelizejs.com/manual/tutorial/transactions.html#unmanaged-transaction-then-callback-)
प्रबंधित लेन-देन के लिए async/इंतजार रास्ते का वर्णन करता है/इंतजार शैली कुछ ऐसी नज़र हो सकता है:
await sequelize.transaction(async t=>{
const user = User.create({ name: "Alex", pwd: "2dwe3dcd" }, { transaction: t})
const group = Group.findOne({ name: "Admins", transaction: t})
// etc.
})
त्रुटि तब होती है, तो लेन-देन है स्वचालित रूप से वापस लुढ़का।
स्वीकृत उत्तर एक "अप्रबंधित लेनदेन" है, जिसके लिए आपको commit
और rollback
स्पष्ट रूप से कॉल करने की आवश्यकता है।
try {
// Result is whatever you returned inside the transaction
let result = await sequelize.transaction(async (transaction) => {
// step 1
await Model.destroy({where: {id}, transaction});
// step 2
return await Model.create({}, {transaction});
});
// In this case, an instance of Model
console.log(result);
} catch (err) {
// Rollback transaction if any errors were encountered
console.log(err);
}
रोलबैक के लिए, बस लेन-देन समारोह के अंदर एक त्रुटि फेंक:
try {
// Result is whatever you returned inside the transaction
let result = await sequelize.transaction(async (transaction) => {
// step 1
await Model.destroy({where: {id}, transaction});
// Cause rollback
if(false){
throw new Error('Rollback initiated');
}
// step 2
return await Model.create({}, {transaction});
});
// In this case, an instance of Model
console.log(result);
} catch (err) {
// Rollback transaction if any errors were encountered
console.log(err);
}
- 1. लेनदेन का उपयोग कैसे करें (लेनदेन शुरू करें, लेनदेन करें)?
- 2. एक्सप्रेस के साथ एससीएसएस का उपयोग कैसे करें? (Node.js)
- 3. node.js एक्सप्रेस के साथ jsonp का उपयोग कैसे करें
- 4. विकल्पों के साथ Node.js zlib मॉड्यूल का उपयोग कैसे करें?
- 5. node.js में अभिव्यक्ति के साथ वादा का उपयोग कैसे करें?
- 6. Node.js mysql लेनदेन
- 7. टाइपस्क्रिप्ट के स्ट्रिंग अनुक्रमित इंटरफ़ेस का उपयोग कैसे करें?
- 8. node.js के साथ mustache.js का उपयोग करना?
- 9. विभिन्न संदर्भों के लिए लेनदेन का उपयोग कैसे करें?
- 10. सर 7 के साथ जावा 7+ 'ऑब्जेक्ट्स.hash()' का उपयोग कैसे करें?
- 11. आप i18n का उपयोग Node.js के साथ कैसे करते हैं?
- 12. mocha के साथ node.js http क्लाइंट का परीक्षण कैसे करें?
- 13. कैसे Node.js का उपयोग कर
- 14. जीएम node.js के साथ समग्र कैसे करें?
- 15. लेनदेन के भीतर एक पूर्ण-पाठ अनुक्रमित कॉलम बदलना
- 16. लेनदेन के साथ JSON ऑब्जेक्ट जेनरेट करें
- 17. एक्सकोड 7 के साथ क्रैश लॉग का प्रतीक कैसे करें?
- 18. अनुक्रमित अनुकूलन mysql क्वेरी का उपयोग
- 19. Data.ByteString के साथ 7 जीबी फ़ाइल का विश्लेषण कैसे करें?
- 20. पोस्टग्रेस्क्ल डेटाबेस के साथ संवाद करने के लिए Node.js net.Socket का उपयोग कैसे करें टर्मिनल
- 21. socketRio के साथ सॉकेट रॉकेट का उपयोग कैसे करें?
- 22. वर्डप्रेस में mysql लेनदेन का उपयोग कैसे करें?
- 23. एएसपी.नेट एमवीसी पहचान 2 में लेनदेन का उपयोग कैसे करें?
- 24. अपाचे लेनदेन: फ़ाइल को लेनदेन से लिखें - संसाधन का उपयोग कैसे करें
- 25. node.js - एक्सप्रेस के साथ वेल्ड का उपयोग कर?
- 26. PHP के साथ लेनदेन में फाइल सिस्टम संचालन कैसे करें?
- 27. MySQL लेनदेन का परीक्षण कैसे करें?
- 28. अनुक्रमित
- 29. एसएसआईएस में लेनदेन कैसे लेनदेन करें?
- 30. jquery AJAX का उपयोग node.js के साथ करते हुए, सर्वर
यह काम नहीं करता जो कोई "प्रबंधित लेन-देन" चाहता है के लिए, यह यह कैसा दिखाई देगा। इस मामले में 'टी' एक वादा है न कि लेनदेन वस्तु। – Pier
@Pier, प्रतीक्षा करें sequelize.transaction() प्रतीक्षा करें और फिर इसका परिणाम प्राप्त करें। टी वादा नहीं है, यह वादा का परिणाम है। –
ओह आप सही हैं, मैंने पूरी तरह से याद किया है कि – Pier