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

नोड.जेएस में MySQL रिटर्न वैल्यू को प्रोसेस करने के वादे का उपयोग करें

यह थोड़ा बिखरने वाला है, मुझे क्षमा करें।

सबसे पहले, यह मानते हुए कि यह कोड mysql ड्राइवर API का सही तरीके से उपयोग करता है, यहां एक तरीका है जिससे आप इसे मूल वादे के साथ काम करने के लिए लपेट सकते हैं:

function getLastRecord(name)
{
    return new Promise(function(resolve, reject) {
        // The Promise constructor should catch any errors thrown on
        // this tick. Alternately, try/catch and reject(err) on catch.
        var connection = getMySQL_connection();

        var query_str =
        "SELECT name, " +
        "FROM records " +   
        "WHERE (name = ?) " +
        "LIMIT 1 ";

        var query_var = [name];

        connection.query(query_str, query_var, function (err, rows, fields) {
            // Call reject on error states,
            // call resolve with results
            if (err) {
                return reject(err);
            }
            resolve(rows);
        });
    });
}

getLastRecord('name_record').then(function(rows) {
    // now you have your rows, you can see if there are <20 of them
}).catch((err) => setImmediate(() => { throw err; })); // Throw async to escape the promise chain

तो एक बात:आपके पास अभी भी कॉलबैक हैं। कॉलबैक केवल ऐसे कार्य हैं जिन्हें आप भविष्य में किसी बिंदु पर कॉल करने के लिए उसके चयन के तर्कों के साथ सौंपते हैं। तो फ़ंक्शन तर्क xs.map(fn) . में , (err, result) नोड में देखे गए फ़ंक्शन और वादा परिणाम और त्रुटि हैंडलर सभी कॉलबैक हैं। यह कुछ हद तक लोगों द्वारा एक विशिष्ट प्रकार के कॉलबैक को "कॉलबैक" के रूप में संदर्भित करता है, जो (err, result) वाले हैं। नोड कोर में उपयोग किया जाता है जिसे "निरंतरता-पासिंग शैली" कहा जाता है, जिसे कभी-कभी उन लोगों द्वारा "नोडबैक" कहा जाता है जो वास्तव में उन्हें पसंद नहीं करते हैं।

अभी के लिए, कम से कम (async/wait अंततः आ रहा है), आप कॉलबैक के साथ बहुत अधिक फंस गए हैं, भले ही आप वादे अपनाएं या नहीं।

साथ ही, मैं ध्यान दूंगा कि वादे तत्काल नहीं हैं, जाहिर तौर पर यहां मददगार हैं, क्योंकि आपके पास अभी भी कॉलबैक है। वादे वास्तव में तभी चमकते हैं जब आप उन्हें Promise.all . के साथ जोड़ते हैं और संचायकों से वादा करें Array.prototype.reduce . लेकिन वे करते हैं कभी-कभी चमकते हैं, और वे हैं सीखने लायक।



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

  2. विशिष्ट आकार बनाना

  3. कैसे स्वचालित रूप से सभी संदर्भ पंक्तियों को हटाने के लिए अगर मूल पंक्ति mysql में हटा दी जाती है?

  4. MySQL के साथ EF6। दी गई कुंजी डिक्शनरी में मौजूद नहीं थी

  5. लैरवेल के साथ लेफ्ट आउटर कैसे जुड़ें?