मैं एक्सप्रेस/मोंगोज़ और क्लाइंट-साइड जेएस का उपयोग करके एक एमजीओडीबी संग्रह में एचटीएमएल क्लास कैसे पोस्ट करूं?

सबसे पहले मेरे प्रोग्रामिंग ज्ञान को फ्रंट-एंड पर पूरी तरह से बंद कर दिया गया है, लेकिन मैं नोड, एक्सप्रेस, मोंगोज़ और मोंगोडब के साथ प्रयोग कर रहा हूं। मैं ऐप को सही तरीके से बनाने और बनाने के लिए किसी और के टेम्पलेट का उपयोग कर रहा हूं, लेकिन डॉट्स को कनेक्ट करते समय मैं खो गया हूं। मेरे पास निम्नलिखित जेड है:

  form(method='post', action="/post/comment/" + post.id)
    textarea(name='text')
    input(type='submit', value='Save')

मार्ग/post.js फ़ाइल से इसके साथ संयुक्त

 app.post("/post/comment/:id", loggedIn, function (req, res, next) {
    var id = req.param('id');
    var text = req.param('text');
    var author = req.session.user;

    Comment.create({
        post: id
      , text: text
      , author: author
     }, function (err, comment) {
      if (err) return next(err);

      res.redirect("/post/" + id);
    });
  });

और यह मॉडल/comment.js है:

var mongoose = require('mongoose');
var ObjectId = mongoose.Schema.Types.ObjectId;
var createdDate = require('../plugins/createdDate');

var schema = mongoose.Schema({
    text: { type: String, trim: true, validate: validateText }
  , post: { type: ObjectId, index: true }
  , author: String
})

function validateText (str) {
  return str.length < 250;
}

schema.plugin(createdDate);

module.exports = mongoose.model('Comment', schema);

अब यह एक काम सबमिट करने और डीबी में सहेजने के लिए ठीक काम करता है। समस्या यह है कि, मैं एक टिप्पणी को सहेजना नहीं चाहता हूं, लेकिन किसी फ़ंक्शन के बाद HTML ने इसका उपयोग किया है। तो मैंने कोशिश की:

var everything =  $('.whatever').html();
$.post("/post/comment/:id", everything, 
  function(){
    console.log('html saved!')
  }
) 

लेकिन मुझे एक <कोड> पोस्ट http://localhost: 3000/post/comment /: id 500 (आंतरिक सर्वर त्रुटि) अब मुझे पता है कि मेरे पास id वैरिएबल इसलिए मैंने यूआरएल में मौजूद संख्या में पेस्ट करने का प्रयास किया, और यह बिना किसी त्रुटि के गुजरने लग रहा था, लेकिन डीबी में दिखाई नहीं दिया था। मुझे पता है कि यह एक विशिष्ट सवाल नहीं हो सकता है, और मैं इस बारे में पूरी तरह गलत हो सकता हूं लेकिन किसी भी सामान्य दिशा की सराहना की जाएगी। धन्यवाद।

0

1 उत्तर

आपको यहां कई समस्याएं प्रतीत होती हैं। निम्नलिखित पर एक नज़र डालने का प्रयास करें:

  1. आपका राउटर "/ post/comment /: id" पर पोस्ट प्राप्त करने के लिए सेट है, लेकिन अंतिम कोड ब्लॉक में आपकी पोस्ट "/ पोस्ट/टिप्पणियां/आईडी" पर पोस्ट कर रही है, जहां टिप्पणियां बहुवचन हैं। इसकी संभावना 404 हो जाएगी। (अपने ब्राउज़र जावास्क्रिप्ट कंसोल के नेटवर्क टैब को चेक करें। यह आपको महसूस किए बिना चुपचाप विफल हो सकता है)।

  2. आपकी 500 त्रुटि इस तथ्य से आ रही है कि आपने वास्तविक पहचानकर्ता के बजाय सीधे ": आईडी" पोस्ट की है। कई नोड ऐप्स में इन पैरामीटर को सत्यापित करने के लिए एक app.param() ब्लॉक सेट अप होगा, और आपके मित्र का टेम्पलेट संभवतः तोड़ने की संभावना है जब उसे उस नंबर की आवश्यकता नहीं होती है।

  3. आपके द्वारा पोस्ट किया गया डेटा उस मॉडल की स्कीमा से मेल खाना चाहिए जिसे आप सहेज रहे हैं। स्कीमा में नामित कोई भी कुंजी सहेजने से पहले छीन ली जाएगी, और आपके मामले में, यदि कोई चाबियाँ मेल नहीं खाती हैं, तो यह केवल एक डिफ़ॉल्ट टिप्पणी उदाहरण होगी, और बिल्कुल भी सहेज नहीं पाएगी।

उम्मीद है की वो मदद करदे!

0
जोड़ा