2013-03-18 111 views
1

我在Express.js和Redis中使用Node.js。我通過增加一個redis密鑰來記錄站點組件的正常運行時間。我想更新uptimerecord:tracker鍵,一旦當前正常運行時間大於當前正常運行時間記錄,但不知何故,即使它是真實的,它也不會更新它並評估uptimeTracker> uptimeRecordTracker與false比較兩個值的結果是false而不是true

有什麼我失蹤?

謝謝!

db.get("uptime:tracker", function(err, uptimeTracker) { 
     db.get("uptimerecord:tracker", function(err, uptimeRecordTracker) { 
      console.log("[Stats] uptimeTracker: " + uptimeTracker) 
      console.log("[Stats] uptimeRecordTracker: " + uptimeRecordTracker) 
      console.log("[Stats] Compare: " + (uptimeTracker > uptimeRecordTracker)) 
      if(uptimeTracker > uptimeRecordTracker) { 
       console.log("[Stats] Tracker Records updated") 
       db.set('uptimerecord:tracker', uptimeTracker) 
      } 
     }); 
    }); 

控制檯輸出:

[Stats] uptimeTracker: 213 
[Stats] uptimeRecordTracker: 99 
[Stats] Compare: false 
+2

..他們是字符串還是整數?嘗試''parseInt(uptimeTracker)> parseInt(uptimeRecordTracker)'' – redShadow 2013-03-18 23:11:29

+0

@redShadow就是這樣,它的工作原理。非常感謝! – mediocre 2013-03-18 23:18:52

+0

很酷,我回答了,所以你可以接受:) – redShadow 2013-03-18 23:23:48

回答

2

它看起來像你比較字符串而不是整數,事實上:

"213" > "99" == false 

213 > 99 == true 

嘗試轉換他們以整數爲前提e做比較:

parseInt(uptimeTracker) > parseInt(uptimeRecordTracker) 
+3

有一個簡短的表示法,你可以使用一元+運算符將其操作數轉換爲數字。而不是parseInt解決方案,請寫:+ uptimeTracker> + uptimeRecordTracker – 2013-03-18 23:25:48

+0

感謝你們每天學習新東西。 – mediocre 2013-03-18 23:29:38

+0

不要忘了parseInt上的基數! – generalhenry 2013-03-19 01:02:22

相關問題