Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

Node.js में async लूपिंग को संभालने के लिए सबसे अच्छा पैटर्न

उपरोक्त कोड वह नहीं कर सकता जो आप उम्मीद करते हैं। आप प्रत्येक .get() . को प्रारंभ कर रहे हैं क्रम में, लेकिन हो सकता है कि वे क्रम से वापस कॉल न करें — ताकि परिणाम किसी भी क्रम में प्रवाहित हो सकें। यदि आप परिणामों को स्मृति में एकत्रित करने के बजाय स्ट्रीम करना चाहते हैं, तो आपको .get() . की आवश्यकता होगी क्रम में।

मुझे लगता है कि कोलन की एसिंक लाइब्रेरी इसे बहुत आसान बनाती है। प्रत्येक आइटम को क्रम से प्राप्त करने के लिए इसका उपयोग करने का एक तरीका यहां दिया गया है (चेतावनी, परीक्षण नहीं किया गया):

app.get("/facility", function(req, res) {
    rc.keys("FACILITY*", function(err, replies) {
        var i = 0;
        res.write("[");
        async.forEachSeries(replies, function(reply, callback){
            rc.get(reply, function(err, reply) {
                if (err){
                    callback(err);
                    return;
                }
                res.write(reply);
                if (i < replies.length) {
                    res.write(",");
                }
                i++;
                callback();
            });
        }, function(err){
            if (err) {
                // Handle an error
            } else {
                res.end(']');
            }
        });
    });
});

यदि आप ऑर्डर की परवाह नहीं करते हैं, तो बस async.forEach() . का उपयोग करें इसके बजाय।

यदि आप परिणामों को एकत्र करने में कोई आपत्ति नहीं करना चाहते हैं और चाहते हैं कि वे क्रम में वापस आएं, तो आप async.map() का उपयोग कर सकते हैं इस तरह (चेतावनी, यह भी परीक्षण नहीं किया गया):

app.get("/facility", function(req, res) {
    rc.keys("FACILITY*", function(err, replies) {
        async.map(replies, rc.get.bind(rc), function(err, replies){
            if (err) {
                // Handle an error
            } else {
                res.end('[' + replies.join(',') + ']');
            }
        });
    });
});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. वास्तविक समय में नोड जेएस और डी3 का उपयोग करके मानचित्र पर राज्यों का प्लॉटिंग नाम

  2. रेडिस मास इंसर्शन

  3. doRedis Ubuntu Linux, R, और RStudio में अजीब सॉकेट कनेक्शन त्रुटि के साथ

  4. अपने स्वयं के Azure खाते लाएं - स्केलग्रिड पर MongoDB® और Redis™ के लिए होस्टिंग

  5. अलग-अलग नोडजेएस उदाहरणों पर सॉकेट साझा करना