我在从对象中提取值时遇到问题。我想检查我的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]输出。如何提取此对象的值?
答案 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)
输出是您不知道的对象。所以尝试:
console.log("Result: %j", rows[0]);
console.log(JSON.stringify(rows[0]));
console.log(require('util').inspect(rows[0], false, null));
查看结构。知道密钥后,使用它来访问数据。
答案 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)
})