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

नोड Mysql async एकाधिक प्रश्न

इसलिए आपको प्रतिक्रिया भेजने से पहले सभी कॉलबैक के वापस आने का इंतजार करना होगा। यदि हम सरलता के लिए त्रुटि प्रबंधन और खाली परिणामों को अनदेखा करते हैं तो यह निम्न के समान किया जा सकता है:

var callback = function(blogs) {
    res.send(blogs);
}

connection.query("SELECT * FROM blogs ORDER BY time DESC", function(err, blogs, fields) {
    var pending = blogs.length;

   for (blog in blogs) {

        connection.query("SELECT * FROM tags WHERE blog_id='blog.id' ", function(err, tags, fields) {
        blog.tags = tags;

        if (0 === --pending) {
            callback(blogs);
        }
     });
   }
});

वादों के साथ, Promise.all फंक्शन देखें जो एक नया वादा लौटाता है। यह वादों का समाधान तब होता है जब सरणी में इसे पारित किए गए सभी वादे हल हो जाते हैं। क्यू पुस्तकालय के साथ यह कुछ इस तरह होना चाहिए:

var getTags = function(blog) {
    var deferred = Q.defer();
    connection.query("SELECT * FROM tags WHERE blog_id='blog.id' ", function(err, tags, fields) {
        blog.tags = tags;
        deferred.resolve();
    });
    return deferred.promise;
}

var promises = blogs.map(getTags(blog));

Q.all(promises).then(res.send(blogs));


  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. मैं PHP में पीडीओ के माध्यम से एक MySQL क्वेरी के माध्यम से कैसे लूप करूं?

  3. दो या दो से अधिक फ़ील्ड से सबसे बड़ा मान

  4. क्या स्प्रिंटफ के बराबर एक MySQL है?

  5. पिछले 30 दिनों से mysql परिणाम प्राप्त करना