Javascript:更改使用点表示法的对象

时间:2015-06-17 18:03:21

标签: javascript jquery elasticsearch

我正在建立一个Elasticsearch搜索界面。我的方法是构建初始查询对象,然后根据用户输入更改它。

在我的对象的过滤器部分,我有

'filter':{  
    'and':[
        {
            'term' : {
                'terms.region.slug' : 'texas'
            }
        },
        {
        ...
        },
    ]
}

在我尝试改变它之前,我至少看看我是否可以访问它。

console.log( filter.and[0].term.terms.region.slug );

但是,我得到了:

  

未捕获的TypeError:无法读取属性' region'未定义的

也许是因为解释器期望点符号指向一个对象的级别,而json的这部分去往ES ...而不是一个对象(虽然它引用一个对象?这是我感到困惑的地方。

编辑:作为参考,这就是Elasticsearch中单个结果的术语对象。

enter image description here

1 个答案:

答案 0 :(得分:2)

这是因为您使用的绑定(即'terms.region.slug')与点符号不兼容。使用点表示法要求绑定可以作为标识符进行解析。但是,括号表示法等同于点表示法,允许使用任何绑定。

console.log( filter.and[0].term['terms.region.slug'] );