2014-07-22 3 views
8

मैं अपने मोंगोस डेटाबेस से सभी सामग्री को हटाने की कोशिश कर रहा हूं लेकिन कुछ भी काम नहीं करता है।Mongoose Model.remove (कॉलबैक) मेरे संग्रह से कुछ भी नहीं हटाता

मैं

# CoffeeScript 
MyModel.find().remove((err) -> console.log('purge callback')) 

# JavaScript 
MyModel.find().remove(function() { console.log('purge callback') }) 

और

# CoffeeScript 
MyModel.find().remove({}, (err) -> console.log('purge callback')) 

# JavaScript 
MyModel.find().remove({}, function() { console.log('purge callback') }) 

की कोशिश की है यहां तक ​​कि .find() कदम को हटाने या जोड़ने एक .exec() मेरी कॉलबैक कभी नहीं पता चलता है और अपने डेटा अभी भी यहाँ कर रहे हैं।

मैं बहुत यकीन है कि मेरी मॉडल और कनेक्शन ठीक हैं हूँ:

  • मैं मोंगो का लॉग में कनेक्शन देख सकते हैं
  • मैं एक ही मॉडल कहीं से छेड़छाड़

संबंधित द्वारा दस्तावेजों में जोड़ सकते हैं : How do I remove documents using Node.js Mongoose?

संपादित

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

उत्तर

20

यह एक "query" वस्तु के रूप में नेवला द्वारा वापस नहीं है, केवल वैध विधि यहाँ .remove() है:

MyModel.remove(function(err,removed) { 

    // where removed is the count of removed documents 
}); 

कौन सा एक ही प्रकार है:

MyModel.remove({}, function(err,removed) { 

}); 

इसके अलावा, आप कोई दस्तावेज कैसे निर्धारित करने कर रहे हैं हटा दिए गए हैं? संभवतः गलत संग्रह में देख रहे हैं। कि तीसरा तर्क के बिना

mongoose.Model("MyModel", myModelSchema, "mymodel") 

या अन्यथा स्कीमा संग्रह का नाम "mymodels" होने के लिए निहित है पर निर्दिष्ट करने: जब तक आप स्पष्ट रूप संग्रह नाम निर्दिष्ट नेवला डिफ़ॉल्ट रूप से संग्रह नाम pluralizes। इसलिए जांचें कि आपके पास सही संग्रह के साथ-साथ सही डेटाबेस कनेक्शन भी है जहां आप दस्तावेज़ों को निकालने की अपेक्षा करते हैं।

+1

जैसा कि मैंने कहा, मैंने भी कोशिश की है लेकिन यह या तो काम नहीं करता है। इसके अलावा मोंगोस प्रलेखन उदाहरण आपके साथ सहमत नहीं हैं http://mongoosejs.com/docs/api.html#query_Query-remove। फिर भी आपकी सहायता के लिए धन्यवाद। – AsTeR

+0

@AsTeR यह हर किसी के लिए काम करता है। जैसा कि ऊपर दिखाया गया है आप सिंटैक्स नहीं दिखाते हैं और इसलिए आपको कुछ अलग करना होगा। –

+0

मैंने कहा कि मैंने '.find()' कदम हटा दिया है। लेकिन आप सही हैं, स्पष्ट बताते हुए महत्वपूर्ण है। मैं MongoHub और कमांड लाइन क्लाइंट के माध्यम से अपने संग्रह को देख रहा हूं। मैंने जोड़ा "एस" चाल देखा है ... – AsTeR

13

समारोह .remove केवल नेवला दस्तावेज़ मॉडल पर काम करता है instance.This एक मॉडल को दूर करने के एक उदाहरण है:

Model.findOne({ field : 'toto'}, function (err, model) { 
    if (err) { 
     return; 
    } 
    model.remove(function (err) { 
     // if no error, your model is removed 
    }); 
}); 

लेकिन, यदि आप विशिष्ट क्वेरी के साथ तत्वों को दूर करेंगे, आप समारोह remove की तरह इस्तेमाल करना चाहिए find फ़ंक्शन:

Model.remove({ title : 'toto' }, function (err) { 
    // if no error, your models are removed 
}); 
+0

यदि मॉडल नोड नहीं मिला तो त्रुटि और क्रैश फेंक देगा – Mick

संबंधित मुद्दे