Mongoose findByIdAndUpdate सही मॉडल नहीं लौटा रहा है


98

मेरे पास एक ऐसा मुद्दा है जो मैंने पहले कभी नहीं देखा है कि मैंगोज ढूंढे हुए है। IndAndUpdate कॉलबैक में सही मॉडल नहीं लौटा रहा है।

यहाँ कोड है:

    var id = args._id;
    var updateObj = {updatedDate: Date.now()};
    _.extend(updateObj, args);

    Model.findByIdAndUpdate(id, updateObj, function(err, model) {
        if (err) {
            logger.error(modelString +':edit' + modelString +' - ' + err.message);
            self.emit('item:failure', 'Failed to edit ' + modelString);
            return;
        }
        self.emit('item:success', model);
    });

Db में मूल दस्तावेज इस तरह दिखता है:

{
    _id: 1234
    descriptors: Array[2],
    name: 'Test Name 1'
}

अद्यतनओबीजी इस तरह दिखता है:

{
    _id: 1234
    descriptors: Array[2],
    name: 'Test Name 2'
}  

कॉलबैक से लौटा मॉडल मूल मॉडल के समान है, अपडेटेडबीजे नहीं। अगर मैं db क्वेरी करता हूं, तो इसे सही तरीके से अपडेट किया गया है। यह सिर्फ डेटाबेस से वापस नहीं किया जा रहा है।

यह 'बेवकूफ-उपयोगकर्ता' त्रुटि की तरह लगता है, लेकिन मैं इसे नहीं देख सकता। किसी भी विचार बहुत सराहना की।


1
यह एक भयानक जगह है। और एक अनुस्मारक कि मुझे अपने सभी प्रोजेक्ट्स को संस्करणों पर मिलान रखने की आवश्यकता क्यों है, क्योंकि यह पैकेज स्वयं इकाई परीक्षणों से गुजर रहा था। धन्यवाद।
जॉनरेड

जवाबों:


292

Mongoose 4.0 में, (और ) के newविकल्प के लिए डिफ़ॉल्ट मान बदल गया है ( रिलीज नोटों के # 2262 देखें )। इसका मतलब है कि अद्यतन लागू होने के बाद, आपको डॉक्टर के नए संस्करण को प्राप्त करने के लिए विकल्प को स्पष्ट रूप से सेट करने की आवश्यकता है:findByIdAndUpdatefindOneAndUpdatefalsetrue

Model.findByIdAndUpdate(id, updateObj, {new: true}, function(err, model) {...

4
Method क्रिएट ’विधि के रिटर्न वैल्यू में बदलाव से भी पकड़े गए। चीयर्स दोस्त, अगर मैं कर सकता तो मैं दो बार वोट करता हूं।
जॉनरेड

4
मानगो परियोजना पर अद्यतन डॉक्स के लिए एक पीआर में भी रखा गया है, इसलिए उम्मीद है कि यह किसी और को बाहर नहीं पकड़ेगा।
जॉनरेड

3
ओह बॉय थैंक यू @ जॉनीएचके। इसने मुझे बर्बाद कर दिया। बेशक मैं नया वापस चाहता हूं। शायद एपीआई के साथ अधिक सुसंगत, लेकिन वास्तव में सामान्य ज्ञान के साथ नहीं ... अगर मैं कुछ अद्यतन करता हूं तो मैं बदलाव देखना चाहता हूं। धन्यवाद
मानगो

20
वाह! उन्होंने क्या ही भयानक निर्णय लिया! यह अद्यतन के बजाय पहली जगह में खोज करने का एकमात्र बिंदु है।
एडम लॉकहार्ट

9
मुझे समझ में नहीं आ रहा है कि किसी को नए के बजाय प्रतिक्रिया में पुराना दस्तावेज़ क्यों होगा
एमिलियोरिओज़्वेज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.