2016-04-21 145 views
-4

我想返回錯誤或結果postdata函數,但它不工作。
我正在使用貓鼬數據庫和集合名稱是'演示'。node.js回調函數不返回值

Demo.prototype.postdata = function(username, mobile, image) { 
    var data = new conn.Demo({username, mobile, image}); 
    data.save(function(err, result) { 
     if (err) { 
      return err; 
     } else { 
      return result; 
     } 
    }); 
    return data.save(); 
} 
+0

檢查'Related'欄的右側,第一個環節。 – zerkms

+2

我想他的意思是[如何從異步調用返回響應?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call ) – Jer

回答

0

範圍;你所尋求的答案是如何處理從'data.save()'返回的變量範圍。不管是解釋型語言(php,bash,asp,JavaScript,vbscript,jsp,go等)還是編譯過的(c,C++,c#,objective-c等),JavaScript和其他語言都可以作用域。

變量可以是全局的或局部的。這個例子中的變量'result'和'err'在'data.save()'函數的範圍內是局部的,因此父函數不能訪問; Demo.prototype.postdata()。

在那個筆記上,我確實認爲其他評論者對於這個問題是否可能重複關於變量範圍是正確的。

0

我有答案...

function rawBody(req, res, next) { 
    var chunks = []; 

    req.on('data', function(chunk) { 
     chunks.push(chunk); 
    }); 

    req.on('end', function() { 
     var buffer = Buffer.concat(chunks); 
     req.bodyLength = buffer.length; 
     req.rawBody = buffer; 
     next(); 
    }); 

    req.on('error', function (err) { 
     console.log(err); 
     res.status(500); 
    }); 
} 
router.post('/:mobile/:username',rawBody,function(req,res){ 
    if(req.rawBody && req.bodyLength>0){ 
     var data={ 
      mobile:req.params.mobile, 
      username:req.params.username, 
      image:req.rawBody 
     } 
     content.postdata(data,callback);  

     function callback(data){ 
      console.log(data); 
     } 
    } 
}) 

    Demo.prototype.postdata=function(data,callback) 
{ 
    var data=new conn.Demo(data); 
    data.save(function(err,result){ 
     if(err){ 
      callback(err) 
     }else{ 
      callback("successfully save"); 
     } 
    }) 
}