我正在爲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
。
您確定TABLE是否已設置?在使用node-mysql之前,我從來沒有遇到過這種情況,因此必須在代碼中加入一些東西。 – alessioalex 2011-12-19 14:50:22
TABLE已設置,但爲了確保我也試過將'... FROM「+ TABLE」,'換成'... FROM hits「,這樣做沒有什麼區別 – Rein 2011-12-19 15:00:56