[Nodejs]小坑を記録します.Can't set headers after they are sent

11184 ワード

exports.Save = function(req, res, next){
    var name = req.body.name || "";
    if(validator.trim(name).length == 0){
        return RequestError(res, '    ');
    }

    if(req.body._id){
        //   
        Category.update({_id: req.body._id}, {$set: {name: name}}, function(err){
            if(err) return MongodbError(res, err);
        });
    }else{
        Category.create({name: name}, function(err){
            if(err) return MongodbError(res, err);
        });
    }
 
  
return res.json({ success: true, message: '  ' });
 
  
  ,           ,      ~~
Category      ,          name  
{
    name: {
        type: String,
        unique: true
    }
}
            ,    ,  Can't set headers after they are sent.  。         ,       res.render,res.send,res.json    return,         ,            , return    return  ,      ,    ?
                        ,    ,   c#             ,   ,      ,    ,        ,
 
  
Category.create(obj, function(err){
    if(err){
            
    }else{
    	    
    }
})
 
  
 
  
Category.create(obj, function(err){
    if(err) return     
        
})
            ,      ,       ,       ,         
 
  
return res.json({ success: true, message: '  ' });
引き出しました.一番後ろに置くべきです.他の言語でも大丈夫です.errの分岐は全部リセットされました.データベースを書いても間違っています.運行が停止されます.最後まで歩くことはできません.しかし、間違えました.次の分析は私が推測しました.正確ではないかもしれません.問題があれば、ご指摘ください.
 
  
           ,           ,       io,            ,node                ,          ,           ,            ,res.json       ,  mongodb   ,      err,    res     ,       ,         err,               ,        res.json,       res.json      。
 
  
 
  
 
  
exports.Save = function(req, res, next){
    var name = req.body.name || "";
    if(validator.trim(name).length == 0){
        return RequestError(res, '    ');
    }
    setTimeout(function(){
        return res.json({ success: true, message: '  ' });
    }, 5000);
 
  
    return res.json({ success: true, message: '  ' });
下面是调用的代码: 
  
 
  
 
  
$.post("/web/manage/category", {_id: id, name: n.val(), _csrf: csrf}, function (res) {
    if (res.success) {
        //window.location.reload();
    }
    console.log(res);
});
 
  
    :ajax   ,  success:true,    ,    , Can't set headers after they are sent.  。
 
  
         ,                    。
 
  
 
  
exports.Save = function(req, res, next){
    var name = req.body.name || "";
    if(validator.trim(name).length == 0){
        return RequestError(res, '    ');
    }

    if(req.body._id){
        //   
        Category.update({_id: req.body._id}, {$set: {name: name}}, function(err){
            if(err) return MongodbError(res, err);
            return res.json({ success: true, message: '  ' });
        });
    }else{
        Category.create({name: name}, function(err){
            if(err) return MongodbError(res, err);
            return res.json({ success: true, message: '  ' });
        });
    }
问题解决!! 
  
       nodejs              ,                           ,          ,js     ,                    ,           ,