/ / Mongoose.js: क्या ObjectId का नाम बदलना संभव है? - नोड.जेएस, मोंगोडब, मोनगोज

Mongoose.js: क्या ऑब्जेक्टआईडी का नाम बदलना संभव है? - node.js, mongodb, mongoose

मोंगो में ऑब्जेक्ट के बारे में कुछ सवाल

1) क्या ObjectId को _id नाम से नहीं कहा जा सकता है? और कैसे करना है? जब मैं अपने कोड में करता हूं:

MySchema = new mongoose.Schema({
id  : mongoose.Schema.ObjectId
});

यह कुछ भी नहीं बदलता है।

2) यदि मेरे पास ऑब्जेक्ट आइडी है, तो _id कहा जाता है, तो इस फ़ील्ड के लिए किसी अन्य नाम के अनुरोध से वापस आना संभव है (उदाहरण के लिए "आईडी" - इसे वेब प्रतिक्रिया में भेजने के लिए);

3) और सिर्फ समझने के लिए सवाल: "आईडी" संपत्ति के माध्यम से ऑब्जेक्ट आईड _id फील्ड क्यों नहीं "_id" है?

धन्यवाद, एलेक्स

उत्तर:

जवाब के लिए 2 № 1

"_Id" तत्व मोंगोडब का हिस्सा हैआर्किटेक्चर जो गारंटी देता है कि संग्रह में प्रत्येक दस्तावेज़ को विशिष्ट रूप से पहचाना जा सकता है। यह विशेष रूप से महत्वपूर्ण है यदि आप अलग-अलग मशीन के पार अद्वितीय पहचानकर्ता की अनुमति देने के लिए शार्किंग का उपयोग करते हैं। इसलिए यह एक डिज़ाइन पसंद है इसलिए इसकी सवारी करने का कोई तरीका नहीं है :)

_Id के लिए डिफ़ॉल्ट मान निम्नानुसार उत्पन्न होते हैं:

  • टाइमस्टैम्प
  • मशीन होस्ट का हैश
  • जनरेटिंग प्रक्रिया के पीआईडी
  • वेतन वृद्धि

लेकिन जब तक आप अद्वितीय चाहते हैं तब तक आप जो भी मूल्य चाहते हैं उसका उपयोग कर सकते हैं।

यदि यह आपके लिए आसान है कि आप उस चीज़ के बारे में सोचें, जो वहां होनी चाहिए, लेकिन आप वास्तव में "इस बारे में परवाह नहीं करते हैं :) बस सिस्टम को ऑटो उत्पन्न करने के लिए छोड़ दें और अपने स्वयं के पहचानकर्ता का उपयोग करें।

तो अगर आप अभी भी अपनी खुद की "आईडी" बनाना चाहते हैं, तो कुछ ऐसा करें:

db.mySchema.ensureIndex({"id": 1}, {"unique" : true})

लेकिन सुनिश्चित करें कि यह वास्तव में अद्वितीय है और यह आपके द्वारा उपयोग किए जाने वाले एपीआई के साथ संघर्ष नहीं करता है।

2) वेब प्रतिक्रिया के रूप में भेजने से पहले, इसे एप्लिकेशन पक्ष पर नाम बदलें।

3) मुझे लगता है कि यह आपके द्वारा उपयोग किए जाने वाले एपीआई के कारण है। हो सकता है कि लेखक को आइड के बजाय आईडी लौटाना अधिक तर्कसंगत लगा? ईमानदारी से कभी नहीं की कोशिश की :)