2012-05-02 10 views
13

मैं फ़िल्टर फ़िल्टर करने से पहले का प्रकार बनाना चाहता हूं जो मुझे वर्तमान उपयोगकर्ता को सभी कार्यों में उपलब्ध कराने की अनुमति देता है। followint दृष्टिकोण अच्छी तरह से काम करता है और मैं भी एक वैश्विक चर घोषित करने के लिए जरूरत नहीं थी:मैं कनेक्ट के मिडलवेयर से app.get-action में चर कैसे पास करूं?

app.use(function(req, res, next){ 
    if(req.session.user_id){ 
     /* Get user from database 
      and share it in a variable 
      that can be accessed frooom ... 
     */ 
     User.find({ /* ... */ }, function(err, users){ 
      if(users.length == 1){ 
       req.current_user = users[0]; 
      } 
      next(); 
     }); 
    } 
    else{ 
     next(); 
    } 
}); 

app.get('/', function(req, res){ 
    // ... here!! 
    console.log(req.current_user); 
    res.render('index', { 
     current_user: req.current_user, 
    }); 
}); 

लेकिन मैं अभी भी अनिश्चित हूँ अगर यह req हेरफेर करने के लिए क्योंकि मैं अगर यह कुछ बदलने के लिए सही है पता नहीं है ठीक है मेरे पास स्वामित्व नहीं है? क्या ऐसा करने के लिए इससे अच्छा तरीका है?

उत्तर

7

यह एक आम दृष्टिकोण सत्र या उपयोगकर्ता वस्तु

साथ अनुरोध विस्तार करने के लिए उदाहरण के लिए इन उदाहरणों को देखने के लिए:

21

आगे बढ़ें और गुणों पर req पर जाएं! जब मैं पहली बार नोड.जेएस और जावास्क्रिप्ट से शुरू कर रहा था, तो यह भी मेरे लिए बहुत अजीब लगा (मुख्य रूप से सी ++ पृष्ठभूमि से आ रहा है)। हालांकि, यह जावास्क्रिप्ट के प्रोटोटाइपिकल ऑब्जेक्ट मॉडल को काफी प्राकृतिक है। इसके साथ आराम करने के बाद, आपको पता चलेगा कि आप संक्षिप्त कोड में शक्तिशाली चीजें कर सकते हैं।

मैं Passport (पिछले टिप्पणीकर्ता द्वारा उल्लिखित) का डेवलपर हूं। यदि आप मिडलवेयर विकसित करने की योजना बना रहे हैं जिसे ऐप्स में पुन: उपयोग किया जा सकता है, तो मेरी सलाह है कि आप उसी गुण में अन्य मिडलवेयर के साथ किसी भी संभावित संघर्ष से बचने के लिए req या res पर जो गुण जोड़ते हैं, उस पर थोड़ा ध्यान देना है।

उदाहरण के लिए, पासपोर्ट req.user पर सेट करता है, लेकिन इसे बदलने का विकल्प देता है (इसलिए एक ऐप इसे req.currentUser पर सेट कर सकता है, उदाहरण के लिए।)। आंतरिक, निजी चर req._passport संपत्ति से जुड़े हुए हैं।

+0

यह केवल मुझे और मेरे साथियों के साथ काम करने की आवश्यकता होगी, इसलिए इस मामले में, दो अलग-अलग संदर्भों में उसी संपत्ति के नाम का गलती से उपयोग करने की कोई उच्च संभावना नहीं है। लेकिन फिर भी नाम बदलने योग्य बनाने का आपका संकेत बहुत उपयोगी है। आपकी प्रतिक्रिया के लिए भी धन्यवाद! – YMMD

संबंधित मुद्दे