2013-04-12 41 views
0
var session = {} 
session.query = {} 
session.query.username = "foo"; 

if(session.query.username) 
    console.log('surname exists'); 

if(session.query2.username) 
    console.log('surname exists'); 

控制這個代碼拋出此異常:「類型錯誤:無法讀取屬性‘QUERY2’的未定義不深的對象存在的NodeJS

在計算器搜查,發現該解決方案:

... 
if(session && session.query2 && session.query2.username) 
    console.log('surname exists') 

但這是非常長的,我有非常嵌套的對象的控件,所以我不能使用這種方法。有什麼簡單的方法可以使用嗎?

+3

你可以試試這個[回覆](http://stackoverflow.com/a/15399878/828197)並讀一點更詳細的[分析](https://coderwall.com/p/cvbgia )的答案。 – Ragnarokkr

+1

另一種方法是將此檢查包裝到'try-catch'塊中。但關鍵是,你不應該試圖避免構造代碼,以便這種檢查是必要的。 – raina77ow

+0

@Ragnarokkr我真的無法在Google搜索或Stackoverflow搜索中找到它。我認爲它會回答我的問題。謝謝! – xecute

回答

0

這可以爲你工作:

try { 
    session.query.username && 
    console.log('Username exists'); 
} catch() { 
    console.log('Username does not exist'); 
} 

在非常深的路徑的情況下(或當你需要測試許多人),它可以更短。