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

Mongoose (ExpressJS) में सहेजने से पहले मॉडल में डेटा स्वरूपित करने के लिए कैसे

जबकि मैं req.body.starttime . के अर्थ के बारे में निश्चित नहीं हूँ , मुझे पूरा यकीन है कि आप स्कीमा ऑब्जेक्ट्स की तलाश कर रहे हैं pre() फ़ंक्शन जो नेवला मिडलवेयर का हिस्सा है और डेटा सहेजे जाने से पहले कॉलबैक फ़ंक्शन की परिभाषा को निष्पादित करने की अनुमति देता है। शायद ऐसा कुछ वांछित काम करता है:

var RunSchema = new Schema({
  [...]
  starttime: {
    type: Date,
    default: Date.now
  }
});

RunSchema.pre('save', function(next) {
  this.starttime = new Date();
  next();
});

ध्यान दें कि save . के लिए कॉलबैक फ़ंक्शन रिकॉर्ड बनाने या अपडेट करने से पहले हर बार ईवेंट को कॉल किया जाता है। तो यह उदाहरण के लिए "संशोधित" टाइमस्टैम्प को स्पष्ट रूप से सेट करने का तरीका है।

संपादित करें:

आपकी टिप्पणी के लिए धन्यवाद, अब मुझे इस बात की बेहतर समझ है कि आप क्या हासिल करना चाहते हैं। यदि आप डेटा को असाइन किए जाने और रिकॉर्ड में बने रहने से पहले संशोधित करना चाहते हैं, तो आप आसानी से set का उपयोग कर सकते हैं स्कीमा की संपत्ति:

// defining set within the schema
var RunSchema = new Schema({
  [...]
  starttime: {
    type: Date,
    default: Date.now,
    set: util.getDate
  }
});

यह मानते हुए कि वस्तु util दायरे के भीतर है (आवश्यक या जो भी) आपका वर्तमान कार्यान्वयन संपत्ति के लिए हस्ताक्षर फिट बैठता है set :

function set(val, schemaType)

वैकल्पिक पैरामीटर schemaType आपको अपनी स्कीमा फ़ील्ड परिभाषा के गुणों का निरीक्षण करने की अनुमति देता है यदि परिवर्तन प्रक्रिया किसी भी तरह से इस पर निर्भर करती है।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब (घंटों में) में टाइमस्टैम्प अंतर की गणना कैसे करें?

  2. ClusterControl स्वचालित डेटाबेस पुनर्प्राप्ति और विफलता कैसे करता है

  3. आसपास के खिलाड़ियों के साथ मोंगो में रैंक लीडरबोर्ड

  4. MongoDB में लंबे समय से चल रहे संचालन का प्रबंधन

  5. सरणी में मैचों की संख्या द्वारा मोंगो क्रमबद्ध करें