जानने के लिए node.js सीखने के लिए मैं एक छोटा ऐप बना रहा हूं जो कुछ आरएसएस फ़ीड को mongoDB में संग्रहीत करता है, उन्हें संसाधित करता है और इन्हें एक एकल फ़ीड (दिनांक द्वारा क्रमबद्ध) बनाता है।एक्सप्रेस अनुरोध को दो बार
यह ~ 1000 ब्लॉग आइटमों के साथ ~ 50 आरएसएस फ़ीड की एक सूची को पार करता है, इसलिए पूरे पार्स को काफी लंबा करना है, इसलिए मैंने निम्नलिखित फीड लाने और पार्स करने के लिए काफी समय निकालने के लिए निम्नलिखित req.connection.setTimeout(60*1000);
डाला।
सबकुछ ठीक से चलता है, लेकिन अनुरोध को दो बार बुलाया जाता है। (मैंने वायरशर्क के साथ जांच की, मुझे नहीं लगता कि यह यहां फेविकॉन के बारे में है)।
मुझे वास्तव में यह नहीं मिलता है।
आप यहां अपने आप का परीक्षण कर सकते हैं: http://mighty-springs-9162.herokuapp.com/feed/mde/20 (इसे "एमडीई" के बारे में पिछले 20 लेखों के साथ एक आरएसएस फ़ीड बनाना चाहिए)।
कोड यहाँ है: https://github.com/xseignard/rss-unify
और यदि हम दिलचस्प बिट्स पर ध्यान केंद्रित: मैं एक मार्ग इस तरह परिभाषित किया है
:
:app.get('/feed/:name/:size?', topics.getFeed);
और topics.getFeed
इस तरह है
function getFeed(req, res) {
// 1 minute timeout to get enough time for the request to be processed
req.connection.setTimeout(60*1000);
var name = req.params.name;
var callback = function(err, topic) {
// if the topic has been found
if (topic) {
// aggregate the corresponding feeds
rssAggregator.aggregate(topic, function(err, rssFeed) {
if (err) {
res.status(500).send({error: 'Error while creating feed'});
}
else {
res.send(rssFeed);
}
},
req);
}
else {
res.status(404).send({error: 'Topic not found'});
}};
// look for the topic in the db
findTopicByName(name, callback);
}
तो कुछ भी कल्पना नहीं है, लेकिन फिर भी, यह मिलता है फीड फ़ंक्शन को दो बार बुलाया जाता है।
क्या गलत है? कोई उपाय?
सबसे आम समस्या है कि कहीं न कहीं आप उपयोग करना भूल गया 'return' –
हैलो mvbl-FST, मैं नहीं आप भूल' '' return''' से क्या मतलब है मिलता है। क्या आप और अधिक व्याख्या कर सकते हैं? –
मैं उपर्युक्त के बारे में गलत हो सकता हूं और इस कोड में इसे दो बार निष्पादित करने के लिए कुछ भी नहीं खड़ा है (favicon.ico को छोड़कर, लेकिन आपने कहा कि यह प्रश्न से बाहर है)। एकमात्र चीज जो मैं करूँगा वह है 'वापसी करें टोपीबिननाम (नाम, कॉलबैक); '। लेकिन यकीन है कि यह मदद नहीं करेगा। –