2015-10-06 92 views
0

當我鍵入表中的「有趣」的用戶名時,我沒有面臨任何錯誤,但是當我輸入錯誤的名稱,這是不是在表中的名稱是面臨錯誤this is the error和代碼附在下面。TypeError:無法讀取未定義的屬性'名稱'

app.post('/Fu',function(req,res,next){ 

     var username = req.body.uname; 
     var password = req.body.pwd; 


     con.query('SELECT name FROM fun WHERE name = "' + username +'" ',function(err, result,fields) { 


      var w = result[0].name; 

      if(username == w){ 
     console.log("login successful"); 

     } 
     else{ 
       console.log("login not successful");  
        } 
    } 

}); 

      res.send("success1"); 
      }); 

有人可以幫助錯誤。

回答

0

你的問題是在這裏:

var w = result[0].name;

因爲結果設置爲[0]不存在(查詢無功而返)。您正嘗試從undefined的某個值獲取name的值。

做這樣的事情:

var w 
if (result[0]) { 
    w = result[0].name 
} else { 
    //your logic to handle this scenario 
} 

這假定任何DB查詢庫使用,即使空將返回一個數組。如果返回undefined,而不是一個空數組,你的if聲明將需要看起來更像:if (result && result[0])

+0

謝謝你這是工作:) –

1

這個錯誤可能是相關的事實是,當用戶名不存在於表,result將被設置爲和空陣列[]。這意味着它根本沒有元素,所以result[0]undefined

請確保在試圖獲得result[0].name之前檢查。

另外,我建議你幾件事情:

1)添加錯誤別的之前檢查;

2)您不需要檢查名稱是否等於結果。您所寫的查詢只會返回已符合該要求的條目;

3)在回調函數內部發送回應,否則,用戶在查詢執行完畢之前會得到「success1」的回答。

這裏如下結果代碼:

app.post('/Fu',function(req, res, next){ 
    var username = req.body.uname; 
    var password = req.body.pwd; 

    con.query('SELECT name FROM fun WHERE name = "' + username +'"', function(err, result,fields) { 
     if (err) { 
      response.sendStatus(500); 
      return; 
     } 

     if (result.lenght > 0) { 
      res.send('Login was successful'); 
     } else { 
      res.send('Login was not successful'); 
     } 
    }); 
}); 
+0

非常感謝它實際上是工作,我知道怎麼我得到錯誤,但無法將其整理出來,再次謝謝:) –

相關問題