简体   繁体   English

如何从Node.js中的回调函数返回值或字符串,猫鼬

[英]how to return a value or string from call back function in Nodejs, mongooose

I have a function that is inserting user credentials. 我有一个插入用户凭证的功能。 I want to return value from a call back function... 我想从回调函数返回值...

    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...';
        }
    });
}

I want to return the response as a string but it showing undefined . 我想以字符串形式返回响应,但显示为undefined How should it be done? 应该怎么做?

Because of async nature .. Try this: 由于异步的性质..尝试以下操作:

 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...');
        }
    });
}

Use the callback ie 使用回调即

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...');
    }
});
}
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);
        }
    });
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM