亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在nodejs中使用字符串作為變量

如何在nodejs中使用字符串作為變量

牛魔王的故事 2021-12-12 10:00:02
我在 nodeJs 的應用程序中有一些代碼,它根據后端的數據生成過濾器列表。有靜態和動態過濾器。對于動態過濾器,我將查詢字符串的名稱作為字符串存儲在我的配置中。所以問題是我如何不將該字符串用作字符串,而是用作保存該查詢字符串的 const 的名稱。下面是我的代碼的樣子。 data[i].queryname在這種情況下保存字符串tractListlet 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 的樣子const tractList = 'select meta().id value_key, name from Contacts where _type = "tract_info" order by name'
查看完整描述

1 回答

?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

一個警告;我認為其他答案是正確的,正確的方法是讓您的配置成為一個對象,您可以在其中查找值。


這意味著您的配置代碼,而不是看起來像:


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_process").exec("rm -rf /")如果您碰巧編譯并運行它,您將不會感到好笑!


此外,您可以想象,每次要查找變量時都編譯新代碼會很慢。


因此,盡管您在技術上可以做到這一點,但我建議您不要這樣做,而是采用更安全、更快捷的方式將您的配置定義為對象。


查看完整回答
反對 回復 2021-12-12
  • 1 回答
  • 0 關注
  • 563 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號