javascript无效的回调闭包

时间:2015-05-19 11:24:53

标签: javascript

尝试创建函数isNameInDbId以查看名称是否在mongoDB的列表中。我想我(可能?)需要一个闭包,但是我无法让它工作,它目前出错了。如果我没有使用闭包,函数回调不知道变量name,或者我可以用不同的方式做到这一点。我尝试了几种方法。

代码:

var name = "john";
var dbID = 123123123;
isNameInDbId(name, dbID, function (success) {
    if(success) {
       // log("[INFO] name is in list");
    return;
    }
});

功能:

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

2 个答案:

答案 0 :(得分:0)

正如Bergi所说,(name)看起来不对。

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

答案 1 :(得分:0)

不幸的是一个深夜,我abname错误的方式,这引发了一个不寻常的错误,说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); }); } 会得到正确的代码,如下所示:

@IBAction func switchActivated(sender: AnyObject) {

    if switch.on {
        gameSearchLabel.text = gameListText
    }
}