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