如何从未知对象属性获取价值?

时间:2013-10-03 06:09:41

标签: mysql sql node.js

我在从对象中提取值时遇到问题。我想检查我的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])只给出[object object]输出。如何提取此对象的值?

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分: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));
  4. 查看结构。知道密钥后,使用它来访问数据。

答案 2 :(得分: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)
})