javascript中带有回调的闭包不起作用

javascript中带有回调的闭包不起作用,javascript,Javascript,尝试使用函数isNameInDbId查看名称是否在mongoDB的列表中。我想我(可能?)需要一个关闭,但我无法让它工作,它目前出错了。如果我不使用闭包,函数回调就不知道变量名称,或者我可以用不同的方法来实现。我试过几种方法 代码: 功能: function isNameInDbId(name, dbID, callback) { user_collection.findOne({_id : dbID}, (function(err, doc) { var names =

尝试使用函数
isNameInDbId
查看名称是否在mongoDB的列表中。我想我(可能?)需要一个关闭,但我无法让它工作,它目前出错了。如果我不使用闭包,函数回调就不知道变量
名称
,或者我可以用不同的方法来实现。我试过几种方法

代码:

功能:

function isNameInDbId(name, dbID, callback) {
    user_collection.findOne({_id : dbID}, (function(err, doc) {
        var names = [];
        var success = false;
        if(doc) {
            names = doc.names;
            if(names.indexOf(name))
                success = true;
        }
        callback(success);
    })(name);
}
正如Bergi所说,
(名称)
看起来是错误的

函数isNameInDbId(名称、dbID、回调){
user_collection.findOne({u id:dbID},(函数(err,doc){
变量名称=[];
var成功=false;
国际单项体育联合会(doc){
名称=文件名;
if(名称.索引OF(名称))
成功=真实;
}
回调(成功);
});

}
不幸的是,一个深夜,我的
a.indexOf(b)
a
b
走错了路,这导致出现了一个异常错误,说
名称
不明-所以我想我可能需要闭包。 拆下封盖并转动
indexOf
将给出正确的代码,如下所示:

function isNameInDbId(name, dbID, callback) {
    user_collection.findOne({_id : dbID}, function(err, doc) {
        var names = [];
        var success = false;
        if(doc) {
            names = doc.names;
            if(name.indexOf(names))
                success = true;
        }
        callback(success);
    });
}
那个
(名称)
看起来是错误的,应该省略。
function isNameInDbId(name, dbID, callback) {
    user_collection.findOne({_id : dbID}, function(err, doc) {
        var names = [];
        var success = false;
        if(doc) {
            names = doc.names;
            if(name.indexOf(names))
                success = true;
        }
        callback(success);
    });
}