MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

नेवला में Date.now() और Date.now में क्या अंतर है?

मुझे पता है कि यह एक पुराना प्रश्न है, लेकिन स्वीकृत उत्तर अंतर को ठीक से नहीं समझाता है। यह व्यवहार में अंतर की व्याख्या करता है, लेकिन यह नहीं बताता कि यह वास्तव में कैसे काम करता है।

आपके mongoose . में स्कीमा, आपका default या तो निर्दिष्ट प्रकार का मान हो सकता है या एक फ़ंक्शन जो निर्दिष्ट प्रकार का मान लौटाता है। Date.now जावास्क्रिप्ट फ़ंक्शन में बनाया गया है जो वर्तमान यूनिक्स टाइमस्टैम्प को एक संख्या के रूप में देता है।

अगर आप Date.now . पास करते हैं default . के रूप में आपके mongoose . में स्कीमा, आप फ़ंक्शन पास कर रहे हैं और mongoose हर बार किसी दस्तावेज़ को उस संपत्ति के लिए डिफ़ॉल्ट मान की आवश्यकता होने पर उस फ़ंक्शन को कॉल करेगा। इसका परिणाम वर्तमान समय में होता है, दस्तावेज़ के समय निर्माण , उस संपत्ति के मूल्य के रूप में संग्रहीत किया जा रहा है।

हालांकि, अगर आप Date.now() pass पास करते हैं इसके बजाय, आप Date.now() . द्वारा लौटाए गए मान को पास कर रहे हैं समारोह के बजाय। ऐसा करने से, आपके दस्तावेज़ों को वर्तमान समय स्कीमा के समय . मिलेगा निर्माण , उस संपत्ति के लिए डिफ़ॉल्ट मान के रूप में। इसका मतलब यह है कि आपके दस्तावेज़ नवीनतम परिनियोजन के समय को संग्रहीत करेंगे, जो शायद वह नहीं है जो आप चाहते हैं।

अगर Date.now स्वीकृत उत्तर द्वारा सुझाए गए अनुसार "नया रिकॉर्ड बनाते समय वर्तमान डेटाटाइम के साथ मोंगोज़ द्वारा प्रतिस्थापित" स्थिर था, तो निम्नलिखित को तार्किक रूप से काम करना चाहिए:

validUntil: {
  type: Date,
  default: Date.now + 3*60*60*1000 // 3 hours from now
}

लेकिन Date.now जादुई रूप से mongoose . द्वारा प्रतिस्थापित नहीं किया गया है , यह एक फ़ंक्शन है और आप किसी फ़ंक्शन में कोई संख्या नहीं जोड़ सकते हैं। हालांकि, आप अपने स्वयं के फ़ंक्शन के अंदर एक फ़ंक्शन को कॉल कर सकते हैं और परिणाम में एक नंबर जोड़ सकते हैं, जैसा कि नीचे दिखाया गया है:

validUntil: {
  type: Date,
  default: () => Date.now() + 3*60*60*1000 // 3 hours from now
}

चूंकि स्वीकृत उत्तर से यह स्पष्ट नहीं था कि Date.now एक फ़ंक्शन है न कि mongoose स्थिर, मैं इसे स्पष्ट करना चाहता था। Date.now() . के बीच का अंतर और Date.now क्या वह Date.now() . है फ़ंक्शन को कॉल करता है और परिणाम देता है, जबकि Date.now फ़ंक्शन को ही लौटाता है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Google क्लाउड मोंगो डीबी:बाहरी आईपी कनेक्ट नहीं हो रहा है

  2. MongoDB:_id और ObjectID . के साथ प्रविष्टि समय पर प्रश्नों की श्रेणी

  3. MongoDB को DynamoDB में माइग्रेट करना, भाग 2

  4. मोंगोडब अद्यतन सीमित संख्या में दस्तावेज़

  5. उल्का:विभिन्न उपयोगकर्ताओं के लिए अद्वितीय MongoDB URL