2013-10-03 61 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都会爱你,如果你开始标记答案接受,帮助你找出你的问题;) –