Javascript 如何在nodejs中将字符串用作变量
我在nodeJs的应用程序中有一些代码,它根据后端的数据生成一个过滤器列表。有静态和动态过滤器。对于动态过滤器,我将查询字符串的名称作为字符串存储在配置中。所以问题是,我如何才能不将该字符串用作字符串,而是用作保存该查询字符串的常量的名称。下面是我的代码的样子。 数据[i].queryname在本例中保存字符串tractListJavascript 如何在nodejs中将字符串用作变量,javascript,node.js,Javascript,Node.js,我在nodeJs的应用程序中有一些代码,它根据后端的数据生成一个过滤器列表。有静态和动态过滤器。对于动态过滤器,我将查询字符串的名称作为字符串存储在配置中。所以问题是,我如何才能不将该字符串用作字符串,而是用作保存该查询字符串的常量的名称。下面是我的代码的样子。 数据[i].queryname在本例中保存字符串tractList let result = await couch.n1qlQuery_wId('contacts', data[i].queryname ,[]) fo
let result = await couch.n1qlQuery_wId('contacts', data[i].queryname ,[])
for (let b = 0; b < result[0].length; b++) {
let newOption = new option
newOption.value = result[0][b].value_key
newOption.name = result[0][b].name
newOption.selected = false
newFilter.options.push(newOption)
}
警告;我认为其他答案是正确的,正确的方法是将您的配置设置为一个对象,您可以在其中查找值 这意味着您的配置代码,而不是看起来像:
const tractList = 'select meta().id value_key, name from Contacts where _type = "tract_info" order by name';
...
应该看起来更像:
const config: {
tractList: 'select meta().id value_key, name from Contacts where _type = "tract_info" order by name',
...
}
这意味着您可以像这样安全地查找:
let query = config[data[i].queryname];
通常的方法是从模块中导出这个congi对象,这样您就可以在任何地方导入它
因此,为了回答您的实际问题,如果您100%确定要查找的变量在范围内,并且1000%确定查找变量是正确的,那么您可以只计算查找变量
var query = eval(data[i].queryname);
这是不安全的,原因是eval将编译该函数中的任何内容并运行它!您可以想象,如果有人无意中更改了他们的查询字符串,使其不是“tractList”
,而是包含类似require(“child\u process”).exec(“rm-rf/”)
的内容,如果您碰巧编译并运行它,您将不会感到好笑
此外,正如您所想象的,每次您想要加载一个变量时编译新代码都会很慢
因此,尽管您在技术上可以做到这一点,但我建议您不要这样做,而是采取更安全、更快的方式将配置定义为对象。这是否回答了您的问题?使用一个对象并将您的属性存储在那里,然后通过
obj[data[i].queryname]
查找它们,这比尝试动态构建变量名并获取其值要简单得多。
var query = eval(data[i].queryname);