2011-12-19 75 views
1

我正在爲Node.js使用felixge的node-mysql插件。我想在我的數據庫中找到最高的ID,所以我使用:在Node.js中使用node-mysql查找返回的查詢對象的值

client.query(
"SELECT MAX('hits_total') FROM " + TABLE, 
function (err, results, fields) { 
    if(err) { 
     throw err; 
    } 
    console.log(results); 
    console.log(fields); 
} 

);

但是,如何找到的結果呢?控制檯日誌:

{ 'MAX(\'hits_total\')': 
    { length: 39, 
    received: 39, 
    number: 2, 
    type: 4, 
    catalog: 'def', 
    name: 'MAX(\'hits_total\')', 
    charsetNumber: 192, 
    fieldLength: 30, 
    fieldType: 253, 
    flags: 0, 
    decimals: 31 } } 
{"MAX('hits_total')":"hits_total"} 

所以我得到一個結果,但是我無法找到它的價值(這是633在這種情況下)。

如果有人可以幫助我,或點我在正確的方向,這將是巨大的:d


編輯

好了,我已經做了一些更多的測試,並似乎有一些錯誤的語法"SELECT MAX('hits_total') FROM " + TABLE,

我可以告訴大家,因爲當我將其更改爲,例如:

"SELECT * FROM " + TABLE + " WHERE id=200"

突然返回一個有效的對象:

{ id: 200, hits_total: 102 }

所以也許MAX( 'whatever_field')目前還不支持?我怎樣才能找到,並有其他辦法來達到同樣的效果?


另一個編輯>我無法在8小時內回答我的問題,所以在這裏它是:

對,我已經找到了解決辦法。

像上面提到的那樣,由於某種原因,語法("SELECT MAX('hits_total') FROM " + TABLE不返回有用的對象。

所以不是,我用這個語法(我將粘貼的完整性整個塊):

var hits = 0; 
var query = client.query("SELECT * FROM hits ORDER BY hits_total DESC LIMIT 1"); 
query 
    .on('row', function(row) { 
     console.log("(row)"); 
     hits = row.hits_total; 
    }) 
    .on('end', function(result) { 
     console.log("(end)"); 
    }); 

通過query.on('row', callback(row){});返回的行對象具有該行作爲屬性的字段名(S) - 在這種案例.hits_total

+0

您確定TABLE是否已設置?在使用node-mysql之前,我從來沒有遇到過這種情況,因此必須在代碼中加入一些東西。 – alessioalex 2011-12-19 14:50:22

+0

TABLE已設置,但爲了確保我也試過將'... FROM「+ TABLE」,'換成'... FROM hits「,這樣做沒有什麼區別 – Rein 2011-12-19 15:00:56

回答

0

results應該是一個數組,如果它實際上是返回行。在這種情況下,它看起來像它正在返回別的東西。

問題出在你的查詢上,而不是用你的代碼。你在「hits_total」附近有單引號,所以它實際上取最大的一個字符串。刪除單引號,或將它們更改爲備份符號,然後它將處理字符串作爲列名稱。

client.query("SELECT MAX(hits_total) FROM " + TABLE, function (err, results, fields) { 
    if (err) { 
    throw err; 
    } 
    console.log(results); 
    console.log(fields); 
}); 
+0

我切換了控制檯。log(max);'和'max = row [「MAX('hits_total')」]'因爲否則它只會記錄'null'。無論如何,'MAX('hits_total')「'只記錄爲'hits_total'。它不記錄實際值。是否可以在MySQL中設置字段類型錯誤?它被設置爲INT。 – Rein 2011-12-19 15:07:56

+0

哈哈,我知道問題是什麼。我已經更新了我的答案:P – loganfsmyth 2011-12-19 16:25:49

+0

嚴重的是,它是'hits_total'的引號? :o – Rein 2011-12-20 08:41:39