मैं अपना ऐप बनाने के लिए नोड.जेएस एक्सप्रेस और सेल.जेएस का उपयोग करता हूं।

जब मैंने अपने विचार में एक और इनपुट जोड़ा तो यह सेव पर क्रैश हो गया।

ERR_EMPTY_RESPONSE

create: function(req, res){
    var title = req.body.title;
    var body = req.body.body;
    var kUser = req.body.kUser;

    Knowlege.create({title:title, body:body, kUser:kUser}).exec(function(err){ // kUser:kUser seems to be the problem
        if(err){
            res.send(500, {error: 'Database Error'});
        }
        res.redirect('/knowlege/list');
    });

टर्मिनल में त्रुटि:

Error: Can't set headers after they are sent.
at validateHeader (_http_outgoing.js:489:11)
at ServerResponse.setHeader (_http_outgoing.js:496:3) (...)

आदर्श:

 module.exports = {
  attributes: {
    title:{
      type: 'string'
    },
    body:{
      type: 'text'
    },
    kUser:{
      type: 'integer',
      length: '11'
    }
  },
  connection:'MysqlServer'
};
2
Alfiron 22 अक्टूबर 2017, 23:47
1
length: '11' क्या है? क्या आपका मतलब size: 11 है?
 – 
Nick
22 अक्टूबर 2017, 23:50
हाँ आकार: 11 वह है जो mysqldb में आवश्यक है
 – 
Alfiron
22 अक्टूबर 2017, 23:57
धन्यवाद, यही कारण था और नीर लेवी भी सही है
 – 
Alfiron
23 अक्टूबर 2017, 00:01

1 उत्तर

सबसे बढ़िया उत्तर

त्रुटि Can't set headers after they are sent का अर्थ है कि आप अपनी प्रतिक्रिया के साथ कुछ करने का प्रयास कर रहे हैं जब वह पहले ही भेजी जा चुकी थी।

आपकी समस्या यह है कि आपके कॉलबैक में किसी त्रुटि के मामले में प्रतिक्रिया भेजने के बाद आप प्रवाह को समाप्त नहीं करते हैं।
चूंकि आप नहीं करते हैं, पुनर्निर्देशन भी होता है, लेकिन प्रतिक्रिया पहले ही भेजी जा चुकी थी।

फ़ंक्शन से बाहर निकलने के लिए बस return जोड़ें:

if(err){
    return res.send(500, {error: 'Database Error'});
}
res.redirect('/knowlege/list');
2
Nir Levy 22 अक्टूबर 2017, 23:52