Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js回调函数不返回值_Javascript_Node.js_Nodes - Fatal编程技术网

Javascript node.js回调函数不返回值

Javascript node.js回调函数不返回值,javascript,node.js,nodes,Javascript,Node.js,Nodes,我想将err或result返回到postdata函数,但它不起作用。 我使用的是mongoose数据库,集合名为“Demo” Demo.prototype.postdata = function(username, mobile, image) { var data = new conn.Demo({username, mobile, image}); data.save(function(err, result) { if (err) {

我想将err或result返回到postdata函数,但它不起作用。
我使用的是mongoose数据库,集合名为“Demo”

  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();
}

范围;您寻求的答案是如何处理从“data.save()”返回的变量范围

在JavaScript和其他语言中,无论是解释语言(php、bash、asp、JavaScript、vbscript、jsp、go等)还是编译语言(c、c++、c#、objective-c等),都使用范围限定

变量可以是全局变量,也可以是局部变量。本例中的变量“result”和“err”在“data.save()”函数的作用域中是局部的,因此父函数无法访问;Demo.prototype.postdata()

在这一点上,我相信其他评论者对这个问题的看法是正确的,因为在不同的范围内,这个问题可能重复。

我得到了答案

 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");
        }
    })
}

查看右侧的
相关
栏,即第一个链接。我想他是指