2017-07-28 54 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歡迎您,請將答案標記爲接受的答案 –

相關問題