Node.js 如何从外部函数NodeJs返回响应

Node.js 如何从外部函数NodeJs返回响应,node.js,Node.js,我是新来的NodeJs我正在尝试从NodeJs中的另一个函数获取响应。 我在Nodejs中调用slug函数。我必须在插入前获取slug,但总是得到未定义的响应 我已经习惯了noejs软件包 var slugs = require("slugs"); 我打电话来 genslug(user.name)像这样 genslug(connection,slugs(user.name),1,slugs(user.name),callback) 创建了一个函数genslug,如下所示 var genslu

我是新来的
NodeJs
我正在尝试从NodeJs中的另一个函数获取响应。 我在
Nodejs
中调用slug函数。我必须在插入前获取slug,但总是得到未定义的响应

我已经习惯了noejs软件包

var slugs = require("slugs");
我打电话来
genslug(user.name)
像这样

genslug(connection,slugs(user.name),1,slugs(user.name),callback)
创建了一个函数
genslug
,如下所示

var genslug = function(connection,slug,counter=1,orgSlug,callback) {
    var query = connection.query('SELECT * FROM users WHERE slug = ?',slug,function(err,res) {
        if(err)
            callback({status: 'error', error : err});
        if(res.length > 0){
            counter++;
            slug = orgSlug+'-'+counter;
            genslug(connection,slug,counter,orgSlug,callback);
        }else{
            callback(false, slug);
        }
    });
}
但我总是得到
未定义的

如果有人知道这一点,请回复

了解回调的性质

第一个参数始终作为
错误
,第二个参数作为
成功

在您的情况下,由于在最终回调中传递了
else
,因此它总是在调用函数时的错误块中执行

尝试从最终回调中删除
false


可能的重复项您可以从调用的位置显示
slug
函数吗?slug:sluggen(连接、slugs(user.name)、1、slugs(user.name)、callback)始终未定义。您如何调用
genslug
方法?请更新问题,您调用方法的方式不正确。
var genslug = function(connection,slug,counter=1,orgSlug,callback) {
    var query = connection.query('SELECT * FROM users WHERE slug = ?',slug,function(err,res) {
        if(err)
            callback({status: 'error', error : err});
        if(res.length > 0){
            counter++;
            slug = orgSlug+'-'+counter;
            genslug(connection,slug,counter,orgSlug);
        }else{
            callback(null, slug);
        }
    });
}
genslug(connection,slugs(user.name),1,slugs(user.name),function(err,resp){
   if(err)
   {
     console.log(err);
   }
   console.log(resp);
})

function genslug(connection,slug,counter=1,orgSlug,callback) {
    var query = connection.query('SELECT * FROM users WHERE slug = ?',slug,function(err,res) {
        if(err)
            callback(err,null);
        if(res.length > 0){
            counter++;
            slug = orgSlug+'-'+counter;
            //genslug(connection,slug,counter,orgSlug); - Callback function can't be call like this
        }else{
            callback(null, slug);
        }
    });
}