2017-07-28 53 views
0

我有一个插入用户凭证的函数。我想从一个回调函数返回值...如何从Nodejs中的回调函数返回一个值或字符串,mongooose

var router = require('express').Router(); 

    var User = require('../Models').users; 

    // function calling here 
    router.post('/signup', function (req, res) 
    { 
     var result = User.signUp(req.body); 
     res.send(result); 
    }); 

module.exports = router; 

//implemetation of function 

userSchema.statics.signUp = function signUp(obj) { 

var user = new userModel(obj); 

    user.password = hash.generate(obj.password); 

    return user.save(function (err, newuser) { 
     if (err) 
     { 
      return 'Error occured during insertion..'; 
     } else 
     { 
      return 'You have sign up successfully...'; 
     } 
    }); 
} 

我想返回的响应作为一个字符串,但它显示undefined。应该怎么做?

回答

0

由于异步性质的..试试这个:

router.post('/signup', function (req, res) 
{ 

    var result = User.signUp(req.body, function(err, result){ 
     if(err){} 
     else{res.send(result)} 
    });; 

}); 

userSchema.statics.signUp = function signUp(obj, callabck) { 
var user = new userModel(obj); 
    user.password = hash.generate(obj.password); 
    user.save(function (err, newuser) { 
     if (err) 
     { 
      callback('Error occured during insertion..',null); 
     } else 
     { 
      callback (null, 'You have sign up successfully...'); 
     } 
    }); 
} 
+0

回报将无法正常工作,使用回调,而不是:) –

+0

@ Kanishka Panamaldeniya错误错误.. – Subburaj

0

使用在其他部分回调即

var router = require('express').Router(); 

var User = require('../Models').users; 

// function calling here 
router.post('/signup', function (req, res) 
{ 

    User.signUp(req.body,function(err,result){ 
      res.send(result); 
    }); 


}); 

module.exports = router; 

//implemetation of function 

userSchema.statics.signUp = function signUp(obj,callback) { 

var user = new userModel(obj); 

user.password = hash.generate(obj.password); 

return user.save(function (err, newuser) { 
    if (err) 
    { 
     callback('Error occured during insertion..',null); 
    } else 
    { 
     callback(null,'You have sign up successfully...'); 
    } 
}); 
} 
+1

在回调()中,第一个参数是错误,第二个参数是结果。所以你在两种情况下传递错误。还要改变User.signUp(req.body,function(result){到User.signUp(req.body,function(err,result){ –

+0

谢谢mate !!欣赏 –

+0

谢谢先生它正在工作... –

0
var router = require('express').Router(); 

var User = require('../Models').users; 



router.post('/signup', function (req, res) 
{ 

    var result = User.signUp(req.body, function(err, result){ 
     if(err){ 
     } 
     else{ 
     res.send(result) 
     } 
    }); 

}); 

userSchema.statics.signUp = function signUp(obj, callabck) { 
var user = new userModel(obj); 
    user.password = hash.generate(obj.password); 
    user.save(function (err, newuser) { 
     if (err) 
     { 
      callback('Error occured during insertion..'); 
     } else 
     { 
      callback(null, newuser); 
     } 
    }); 
} 
+0

谢谢先生,它在工作 –

+0

@RanaUmair欢迎您,请将答案标记为接受的答案 –

相关问题