मैं केवल बुनियादी कार्यात्मकताओं के साथ पिज्जा बेचने के लिए एक मिनी-स्विगी एप्लिकेशन बना रहा हूं। मूल ऐप यहां उपलब्ध है। इस ऐप में लॉगिन/रजिस्टर सुविधा नहीं है जिसे मैं इस ऐप में जोड़ना चाहता हूं। मैं इसे लागू करते समय सत्र भंडारण सीखना चाहता हूं।
मेरा सवाल यह है कि:
क्या मुझे हर बार उपयोगकर्ता द्वारा ऐड बटन पर क्लिक करने और डेटाबेस में कार्ट को अपडेट करने के लिए एपीआई कॉल करनी चाहिए? (वर्तमान में स्थानीय भंडारण का उपयोग करते हुए प्रतिक्रिया संदर्भ एपीआई द्वारा नियंत्रित किया जा रहा है, अभी के लिए कोई डेटाबेस नहीं है। आदेश देने पर मैं बस स्थानीय भंडारण को फ्लश कर रहा हूं)।
अब सुविधाओं के लिए डेटाबेस की आवश्यकता है
- लॉगिन/पंजीकरण
- प्रत्येक उपयोगकर्ता के लिए आदेश सारांश
- सत्र प्रबंधन
- व्यवस्थापक भूमिकाएं आदि
कार्ट को अपडेट करने के लिए स्थानीय स्टोरेज का उपयोग करना जारी रख सकता है और जब उपयोगकर्ता ऑर्डर देता है तो केवल एपीआई कॉल करता है। और ऑर्डर देने के बाद मैं कार्ट को स्थानीय स्टोरेज से फ्लश कर सकता हूं। (मुझे लगता है कि यह अधिक इष्टतम है क्योंकि यह प्रदर्शन के लिए बेहतर होगा और सर्वर लोड को भी कम करेगा।)
क्या यह सब redux का उपयोग किए बिना प्राप्त किया जा सकता है?
कृपया मदद करें, यह देखते हुए कि मैं इसे सर्वोत्तम प्रथाओं के साथ एक ऐप बनाना चाहता हूं, अगर आपके पास कुछ अच्छे संसाधन हैं तो कृपया साझा करें, मैं यहां नौसिखिया हूं।
यदि आप किसी अन्य विशेषता के बारे में सोच सकते हैं तो कृपया मुझे बताएं :)
4 जवाब
मेरा सुझाव है कि NextAuth का उपयोग सत्र प्रबंधन और प्रमाणीकरण के लिए Strapi CMS यह आपके प्रोजेक्ट के लिए मजबूत और आसान होगा।
- जब भी उपयोगकर्ता ऐड बटन पर क्लिक करता है तो आपको डेटाबेस को अपडेट करना चाहिए और डेटाबेस में कार्ट को अपडेट करना चाहिए।
- आप विभिन्न उपयोगकर्ता प्रमाणीकरण विधियों का उपयोग कर सकते हैं जैसे कि Google साइन-इन विधि का उपयोग करना या आप JWT (JSON वेब टोकन) का उपयोग करके एक कस्टम उपयोगकर्ता प्रमाणीकरण बना सकते हैं।
- जब तक उपयोगकर्ता ऑर्डर नहीं देता, तब तक स्थानीय स्टोरेज पर उपयोगकर्ता कार्ट की जानकारी रखना एक अच्छा विचार नहीं होगा, कार्ट की जानकारी महत्वपूर्ण उपयोगकर्ता डेटा है, और आप उपयोगकर्ता कार्ट को अन्य सभी उपकरणों पर अपडेट नहीं कर सकते हैं जहां उपयोगकर्ता ने लॉग इन किया है, और एक बार जब उपयोगकर्ता ब्राउज़र डेटा हटा देता है, तो कार्ट डेटा भी गायब हो जाएगा, जो व्यवसाय के लिए एक महत्वपूर्ण नुकसान हो सकता है।
- Redux के बजाय आप प्रतिक्रिया संदर्भ के साथ प्रतिक्रिया reducer का उपयोग कर सकते हैं।
बहुत ही रोचक प्रश्न, मैं इसके केवल एक भाग का उत्तर दूंगा, अन्यथा इसे पढ़ने में बहुत लंबा समय लगेगा :)
कार्ट सर्वर-साइड को बनाए रखने के लिए आपको एपीआई कॉल करने की आवश्यकता है या ऑर्डर दिए जाने के बाद ही ऐसा करें, यह आपके ऐप के व्यावसायिक तर्क के बारे में एक प्रश्न है।
एक प्रश्न पूछें, "क्या मैं चाहता हूं कि मेरे उपयोगकर्ता कार्ट में आइटम जोड़ सकें और किसी भिन्न मशीन/ब्राउज़र से लॉग इन करने पर भी इसकी सामग्री को देख/अपडेट/संपादित कर सकें?"
यदि उत्तर हाँ है तो निश्चित रूप से आपको अपने कार्ट को सर्वर के साथ सिंक्रनाइज़ करना होगा ताकि यह हमेशा सुसंगत हो सके। इस उद्देश्य के लिए मैं एक कतार का सुझाव दूंगा, जिसमें स्थानीय रूप से संशोधित कार्ट का अंतिम संस्करण होगा, एक बार जब उपयोगकर्ता ने आपके कार्ट में 2000ms के लिए कोई कार्रवाई नहीं की, तो आप सुरक्षित रूप से एक एपीआई कॉल कर सकते हैं और कार्ट की जानकारी जारी रख सकते हैं आपके डीबी में।
यह आपके सर्वर पर लोड को कम करेगा, क्योंकि लोग add
बटन पर 20 बार क्लिक करके कार्ट में आपके पास मौजूद वस्तुओं की संख्या में वृद्धि कर सकते हैं, इस मामले में, सर्वर को एक बार में 20 अनुरोध भेजने के बजाय समय, यह बस कार्ट को लगातार बनाए रखने की प्रक्रिया में देरी करता है, जब तक कि उपयोगकर्ता कुछ एक्स राशि मिलीसेकंड के लिए आपके ऐप से इंटरैक्ट करना बंद नहीं कर देता।
शुरू करने के लिए, मैं कहना चाहता हूं कि मुझे आपका CSS वास्तव में पसंद आया :)।
कार्ट सिस्टम बनाने के लिए आपको डेटाबेस या redux का उपयोग करने की आवश्यकता नहीं है, लेकिन जैसा कि आप अनुमान लगा सकते हैं कि उनके पास अच्छे अवसर हैं।
डेटाबेस के लाभ:
- आप उपयोगकर्ता के कार्ट को उसके सभी उपकरणों पर दिखा सकते हैं।
- उपयोगकर्ता का कार्ट हमेशा यहां रहेगा जब तक कि उसने इसे हटाया नहीं है।
- आप सभी घटकों के डेटा तक पहुंच सकते हैं। (कठिन)
- सीखने के लिए यह बहुत अच्छा अभ्यास है।
डेटाबेस के नुकसान:
- आपको एक एपीआई की आवश्यकता है, इसलिए इसे स्थापित करना कठिन है।
- आपका कोड अन्य विकल्पों की तुलना में अधिक जटिल होगा।
REDUX लाभ
- इसे सेट करना थोड़ा आसान है। आपको एक नई परियोजना की आवश्यकता नहीं है।
- आप सभी घटकों के डेटा तक पहुंच सकते हैं। (मध्यम)
REDUX के नुकसान
- असल में मैं वास्तव में रेडक्स के किसी भी नुकसान को नहीं जानता :) (अगर आप जानते हैं तो कृपया मुझे बताएं)
स्थानीय लाभ
- बहुत आसान
- आप सभी घटकों के डेटा तक पहुंच सकते हैं। (आसान)
लोकलस्टोरेज के नुकसान
- आप किसी अन्य डिवाइस पर उपयोगकर्ता का कार्ट नहीं दिखा सकते हैं
मैंने सत्र संग्रहण को अलग नहीं किया क्योंकि यह स्थानीय संग्रहण जैसा ही है। केवल अंतर यह है कि सत्र संग्रहण प्रति-टैब है।
मेरी राय में, आपको डेटाबेस का उपयोग करना चाहिए। मुझे पता है कि यह एक बुनियादी ऐप है लेकिन आप इसे इस तरह से करके बहुत कुछ सीख सकते हैं।
और ये मेरी सिफारिशें हैं: