2013-10-03 64 views
1

我有一個從對象中提取值的問題。我想檢查我的SQL表有問行:如何從未知對象屬性中獲取價值?

var checkRow = function(connection,chekedColumn,chekParam, checkVal){ 
    connection.query('SELECT EXISTS(SELECT '+ chekedColumn +' FROM asterisk.users where ' +chekParam+'='+checkVal+')', function (err, rows) { 
     if(err) console.log('SQL suerry error') 
     else { 
      console.log(rows[0]); // output: { 'EXISTS(SELECT id FROM asterisk.users where name=1600)': 1 } 
      return (rows[0]); 
     }; 
    }); 
}; 

但是從查詢返回的值是一個對象,並return(rows[0])僅舉[目標對象]輸出。我如何提取這個對象的值?

+0

據我所知,在JavaScript中訪問的對象與點的關鍵字不使用該行[(。) 0]試試這個,如果我沒有錯rows.0 – user2727841

+0

rows.0不工作:SyntaxError:意外的數 –

+0

rows [0]很好,rows.0不是,0是無效的屬性名稱。查看通過訪問的有效屬性名稱。 [這裏](http://stackoverflow.com/questions/1661197/valid-characters-for-javascript-variable-names)。 – user568109

回答

1

您可以使用

Object.keys(obj) 

來獲取對象的值。有關更多信息,請參閱api reference

編輯:

只是爲了升技更細說了...你如何去得到它是這樣的。

// get the keys of the source 
var keys = Object.keys(source); 
// loop through the keys 
for (var i = 0; i < keys.length; i++) { 
    var key = keys[i]; 
    var value = source[key]; 

    //do something with value 
} 
+0

var keys = Object.keys(rows [0]); var key = keys [0]; (key []]; //輸出:EXISTS(SELECT id FROM asterisk.users where name = 1600) –

+0

console.log .key); //輸出:undefined –

+0

console.log(rows [0]); //輸出:undefined –

0

輸出是一個你不知道的對象。因此,嘗試兩種:

  1. console.log("Result: %j", rows[0]);
  2. console.log(JSON.stringify(rows[0]));
  3. console.log(require('util').inspect(rows[0], false, null));

查看結構。知道密鑰後,使用它來訪問數據。

0

謝謝你的幫助和你的想法。 Dmitry Matveev幫助我理解如何識別對象屬性(Objekt.keys())。並感謝user568109提醒異步功能,所以我使用回調。
最終代碼:

var checkRow = function(connection,chekedColumn,chekParam, checkVal,callback){ 
    connection.query('SELECT EXISTS(SELECT '+ chekedColumn +' FROM asterisk.users where ' +chekParam+'='+checkVal+')', function (err, rows) { 
       if(err) console.log('SQL suerry error') 
       else { 
        var keys=Object.keys(rows[0]); 
        keys.forEach(function(key) { 
         callback(rows[0][key]); 
        }); 
        }; 
     }); 

}; 

而且使用該功能,我們需要把它想:

checkRow(connection,'id','name',name,function(value){ 
console.log(value) 
}) 
+0

每個人在stackoverflow都會愛你,如果你開始標記答案接受,幫助你找出你的問題;) –