对象的好处是在JavaScript中指定为自己的对象索引的字符串

时间:2015-11-24 16:08:48

标签: javascript mongodb

我正在检查MongoDB的runCommand方法中的代码,用于我的教育:

function ( obj, extra ){
    if ( typeof( obj ) == "string" ){
        var n = {};
        n[obj] = 1;
        obj = n;
        if ( extra && typeof( extra ) == "object" ) {
            for ( var x in extra ) {
                n[x] = extra[x];
            }
        }
    }
    return this.getCollection( "$cmd" ).findOne( obj );
}

我专注于这个块:

var n = {};
n[obj] = 1;
obj = n;

现在,documentation说明了该方法:

  

数据库命令,以文档形式或字符串形式指定。如果指定为字符串,db.runCommand()会将字符串转换为文档。

虽然这简单解释了第三行,但我试图找出开发人员对此问题的看法:

n[obj] = 1;

我对此的好处的想法是,这可以用于对象上的平等目的,也许是在内部调用上,其中:

var checkEq = n["{num: 1}"];

将返回" truey" 1,特别适用于快速和干净的平等检查,但是对于经验丰富的开发人员有关此技巧有用的案例的任何见解/保证都会很好。

1 个答案:

答案 0 :(得分:1)

我相信n[obj] = 1;正在用于规范化传入的命令。我们可以在文档中看到issue-commands,它们的所有示例命令都是runCommand({command: 1})形式。例如,如果有人使用runCommand("buildInfo"),则字符串"buildInfo"将转换为对象{"buildInfo": 1}

为什么他们使用这个对象表示法,键是命令,而值是一个超出我的。我梳理了文档和代码,原因是值为1,但我的搜索空手而归。