क्या चल रहा है कि findByIdAndUpdate
जैसे तरीकों के "अपडेट" परिवार को कॉल करते समय Mongoose के किसी भी सत्यापन, मिडलवेयर या डिफ़ॉल्ट मानों का उपयोग नहीं किया जाता है। . उन्हें केवल save
. के लिए कॉल द्वारा आमंत्रित किया जाता है या create
।
इसका कारण यह है कि "अपडेट" कॉल प्रभावी रूप से मूल ड्राइवर को पास-थ्रू होते हैं, जिसमें Mongoose केवल स्कीमा परिभाषा के आधार पर फ़ील्ड की टाइप-कास्टिंग प्रदान करता है।
नेवला 4.0 अपडेट
जब कोई update
. के दौरान कोई नया दस्तावेज़ बनाया जाता है, तो Mongoose अब डिफ़ॉल्ट सेटिंग का समर्थन करता है , findOneAndUpdate
, या findByIdAndUpdate
उपर setDefaultsOnInsert
सेट करें true
. का विकल्प इसे सक्षम करने के लिए। यह $setOnInsert
. का उपयोग करता है डालने पर डिफ़ॉल्ट बनाने के लिए ऑपरेटर।
var queryOptions = {
upsert: true,
setDefaultsOnInsert: true
};
Company.findByIdAndUpdate(id, company, queryOptions).exec( ...