2

以下是相关代码:

var field = String(querystring.parse(postData).field).toLowerCase();
var qryObj = {
"fields" : view_options,
"query":{
    "term" : { field : value} 
    }
};

变量“字段”将是一个字符串,如“数字”、“日期”等。我想要做的是仅在变量“字段”中定义的字段中搜索索引。如果我对字符串进行硬编码,则此代码有效,如下所示:

"term" : { "number" : value} 

那么有人可以阐明一种仅使用预定义变量而不是字符串来搜索特定字段的方法吗?

4

1 回答 1

6

您不能将变量用作Object 文字中的键。在 each 的左侧:,标识符本身成为键的名称,而不是作为其值的变量进行评估。

console.log({ key: "value" });   // { key: 'value' }
console.log({ "key": "value" }); // { key: 'value' }

您必须Object使用括号成员运算符构建第一个,然后将其应用于查询对象:

var term = {};
term[field] = value;

var qryObj = {
    fields: view_options,
    query: {
        term: term
    }
};

更新:

在 ECMAScript 6 中,对象文字现在支持使用括号表示法计算键:

var qryObj = {
    fields: view_options,
    query: {
        term: {
            [field]: value
        }
    }
};
于 2013-07-28T22:42:28.970 回答