2016-04-21 186 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"); 
     } 
    }) 
}