2012-03-03 19 views
5

में उपयोगकर्ता के अनुकूल आईडी उत्पन्न करें इस परियोजना पर मैं काम कर रहा हूं। यह एक सोशल नेटवर्क की तरह है जहां हमारे पास उपयोगकर्ता, पोस्ट, चित्र इत्यादि हो सकते हैं और फिर यह समस्या आ गई। हम माइस्क्ल और "लगभग जादुई" ऑटो-वृद्धि क्षेत्र में उपयोग किए जाते हैं और अब हम इस पर भरोसा नहीं कर सकते हैं। मुझे पता है कि मोंगो में _id ऑब्जेक्ट एक दस्तावेज़ की पहचान करने का एक आसान तरीका देता है क्योंकि यह विशिष्टता की गारंटी देता है। लेकिन प्रमुख उपयोगकर्ता के अनुकूल नहीं है और है कि हम क्या जरूरत है, इसलिए हम की तरह यूआरएल बना सकते हैं:मोंगो डीबी

http://website.com/posts/{post_id} 
http://website.com/{user_id} 

मैं एक समाधान विकसित लेकिन मुझे नहीं लगता यह ऐसा करने का सबसे अच्छा तरीका है। मैं पहले केवल एक कॉलम के साथ एक MySQL तालिका बनाते हैं। यह कॉलम user_id को संग्रहीत करता है और यह एक ऑटो-वृद्धि फ़ील्ड है। मोंगो पर हर नए रिकॉर्ड के लिए मैं इस mysql तालिका में एक नई पंक्ति डालता हूं और उपयोगकर्ता_आईडी को "LAST_INSERT_ID" फ़ंक्शन के साथ प्राप्त करता हूं, अब मैं अपने डेटा को अपने मोंगो संग्रह में एक संख्यात्मक आईडी के साथ सम्मिलित कर सकता हूं। और अन्य लाभ यह है कि मैं अपनी mysql तालिका मिटा सकता हूं मान लीजिए, दस लाख पंक्तियों के बाद क्योंकि आईडी पहले ही मोंगो में संग्रहीत है। क्या मैं इसे गलत कर रहा हूं?

+3

आप उन एक पूर्णांक याद करने की उम्मीद करते हैं? एकमात्र व्यक्ति जो मुझे पता है कि जो उससे दूर हो जाता है, वह xkcd प्रसिद्धि के रैंडल है, और उसके पास केवल 1000 से अधिक है। बस मोंगो आईडी का उपयोग करें- उपयोगकर्ता उन्हें वैसे भी याद नहीं कर रहा है। –

+1

"उपयोगकर्ता के अनुकूल" मानव पठनीय और समझने योग्य सामग्री के लिए खड़ा है। मुझे उपयोगकर्ताओं को याद रखने की आवश्यकता नहीं है, लेकिन मुझे अन्य कारणों से इसकी आवश्यकता है। –

उत्तर

7

सबसे पहले, मुझे उत्पन्न आईडी मोंगो प्रदान करता है पर मनमाने ढंग से ऑटो वृद्धि संख्या का उपयोग करने के लिए कोई लाभ नहीं दिखता है। न केवल एक मनमानी आईडी है, बल्कि आपको अनुक्रम बनाए रखना है।

उसने कहा, क्यों नहीं, मोंगो आईडी को प्रबंधित करने दें, और अपने यूआरएल के लिए एक और अद्वितीय पहचानकर्ता का उपयोग करें। यदि आपके उपयोगकर्ताओं के पास 'उपयोगकर्ता नाम' है, तो मुझे लगता है कि आप पहले से ही यह सुनिश्चित कर चुके हैं कि संग्रह में अद्वितीय है। आईडी द्वारा खोजने के बजाय बस उस अनूठी संपत्ति से पूछताछ करें।

यह उपयोगकर्ता को डेटाबेस में एसोसिएशन को रीमेप किए बिना, अपने अद्वितीय पहचानकर्ता को बदलने की अनुमति देता है।

और पोस्ट के लिए, शीर्षक से केवल एक अद्वितीय स्लग उत्पन्न करें।

8

उपयोगकर्ताओं के लिए पोस्ट और उपयोगकर्ता नाम के लिए स्लग का उपयोग क्यों नहीं करते? यह मानव पठनीय होना चाहिए।

+0

पूछना है, एक स्लग क्या है? – raffian

+2

विकिपीडिया से परिभाषा: "एक स्लॉग एक यूआरएल का हिस्सा है जो मानव-पठनीय कीवर्ड [1] [2] का उपयोग करके एक पृष्ठ की पहचान करता है, उदाहरण के लिए" स्लग_ (वेब_पublलिश) ", एक अपारदर्शी पहचानकर्ता की बजाय आईडी संख्या की संख्या डेटाबेस के भीतर सामग्री (उदाहरण के लिए "27077 9 11")। स्लग का उपयोग स्वच्छ यूआरएल (अक्सर पर्मलिंक्स के लिए) बनाने के लिए किया जाता है जो कि टाइप करना, वर्णनात्मक और याद रखना आसान है। उदाहरण के लिए, इस यूआरएल में: http: //example.org/2011/introduction-to-blogging स्लग "परिचय-से-ब्लॉगिंग" है। " – dicarsio

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