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])只给出 [object object] 输出。我怎样才能提取这个对象的价值?

4

3 回答 3

1

您可以使用

Object.keys(obj) 

获取对象的值。有关更多信息,请参阅api 参考

编辑:

只是为了详细说明这一点......你将如何把它弄出来是这样的。

// 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
}
于 2013-10-03T06:22:39.733 回答
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));

查看结构。知道密钥后,使用它来访问数据。

于 2013-10-03T07:06:10.343 回答
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)
})
于 2013-10-04T07:38:31.533 回答