2012-11-16 18 views
5

मैं एक नोड + एक्सप्रेस परियोजना चल रहा है, मैं निम्नलिखित स्कीमा और मॉडल के साथ एक बुनियादी ब्लॉगिंग प्रणाली के निर्माण कर रहा हूँ हैनोड + एक्सप्रेस नेवला उप संग्रह दस्तावेज़ सम्मिलित

var Post = mongoose.Schema({ 
    title: String, 
    body: String, 
    author: String, 
    dateCreated: {type: Date, default: Date.now }, 
    comments: [{author: String, body: String, date: Date}] 
}); 
var Post = db.model('Post', Post); 

मैं निम्नलिखित कोड के माध्यम से एक पोस्ट अनुरोध स्वीकार करते हैं और शीर्षक, शरीर और लेखक अद्यतन से यह

app.post('/addpost', function(req,res){ 
    console.log(req.body.post); 
    var post = new Post(req.body.post); 
    post.save(function(err){ 
     if(!err){ 
      res.redirect('/'); 
     }else{ 
      res.redirect('/'); 
     } 
    }) 
}) 

सवाल मैं है, मैं स्कीमा कोडा का उपयोग करने के लिए टिप्पणियाँ कैसे जोड़ सकता हूँ है मैं पहले से ही विकसित किया है?

req.body.post आउटपुट

{ title: 'Hello World', body: 'This is a body', author: 'Bioshox' } 

कौन सा नेवला के लिए स्पष्ट रूप से स्वीकार्य है, लेकिन टिप्पणी कैसे मैं इस बारे में जाना होगा जोड़ने के लिए?

धन्यवाद !!

var comment = { 
    author: req.body.post.author , 
    body: req.body.post.body, 
    date: new Date() 
}; 

Post.findOneAndUpdate(
    { title: req.body.post.title }, 
    { $push: { comments: comment }}, 
    { safe: true, upsert: true }, 
    function(err, blogModels) { 
    // Handle err 
    }); 

यह स्निपेट बस, एक Blog पोस्ट खोजने की कोशिश करता है, तो यह तो $push सफलता एक नई टिप्पणी, अन्यथा, एक ब्लॉग पोस्ट एक प्रारंभिक टिप्पणी के साथ जोड़ता है:

उत्तर

12

आप नीचे दिए गए कोड का उपयोग कर सकते हैं। तो, आपका अंतिम कोड इस तरह दिखना चाहिए:

app.post('/addpost', function(req,res) { 
    var comment = { 
     author: req.body.post.author , 
     body: req.body.post.body, 
     date: new Date() 
    }; 

    Post.findOneAndUpdate(
     { title: req.body.post.title }, 
     { $push: { comments: comment }}, 
     { safe: true, upsert: true }, 
     function(err, blogModels) { 
     // Handle err 
     }); 
}); 
+0

'अपरर्ट' क्या है? – chovy

+3

यदि 'अपरर्ट' प्रॉपर्टी' सत्य 'है, तो पहले mongo मिलान' शीर्षक: req.body.post.title' मानदंडों के साथ दस्तावेज़ ढूंढने का प्रयास करें। यदि ऐसा है, तो बस '{$ push ...} 'के साथ दस्तावेज़ अपडेट करें। अन्यथा, मोंगो एक नया दस्तावेज़ बनाता है, इसे डालें और $ पहली टिप्पणी init दबाएं। अधिक जानकारी: http://docs.mongodb.org/manual/reference/command/findAndModify/ –

+0

वास्तव में मुझे लगता है कि अपरर्ट उस शीर्षक के साथ ** ** ** ढूंढना चाहता है और यदि यह मौजूद नहीं है तो पोस्ट पोस्ट करता है टिप्पणी नहीं – mrBorna

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