我需要能够从数组中提取特定值,以便能够在IF语句中使用它来过滤SQL中的数据。我的目标是能够创建这样的东西
if(obj !== undefined){ //do something} else { //do something else }
我需要这样做的原因是要知道SQL中是否有条目,这是我唯一想到的。要检查它在搜索时是否返回任何值。
代码:
con.query("SELECT * FROM whitelisttest WHERE (identifier) = (?)", [messageArray[1]], function (err, result) {
if (err) throw err;
var person = JSON.stringify(result);
obj = JSON.parse(person);
test = obj.whitelisted;
console.log(result);
console.log(obj);
console.log(person);
console.log(test);
控制台日志结果:
[ RowDataPacket { identifier: 'etanol', whitelisted: 3 } ]
[ { identifier: 'etanol', whitelisted: 3 } ]
[{"identifier":"etanol","whitelisted":3}]
undefined
预期结果是针对当前未定义的输出,在代码中称为test的输出为3,如果我这样做,则结果为etanol。
test = obj.identifier
console.log(test)
编辑:
对我有帮助的解决方案(当试图将obj [0] .whitelisted用作obj.whitelisted时错过了[0])
con.query("SELECT * FROM whitelisttest WHERE (identifier) = (?)", [messageArray[1]], function (err, result) {
if (err) throw err;
var person = JSON.stringify(result);
obj = JSON.parse(person);
console.log(obj[0].whitelited)
答案 0 :(得分:1)
这是一个数组console.log(Array.isArray(result) )
// => true
因此您的完整答案应该是:
con.query( "SELECT * FROM whitelisttest WHERE (identifier) = (?)"
, [messageArray[1]]
, function (err, result)
{
if (err) throw err;
console.log(result[0].whitelisted)
//...
无需使用JSON.stringify
和then JSON.parse
var obj = [ { identifier: 'etanol', whitelisted: 3 } ];
console.log(' obj[0].whitelisted => ', obj[0].whitelisted); // => 3
var ref = 'whitelisted';
console.log(' obj[0][ref] => ', obj[0][ref]); // => 3
console.log(' obj[0]["whiteliste"] => ', obj[0]['whitelisted']); // => 3
答案 1 :(得分:0)
因为它是一个数组,所以您需要访问第一个元素的属性whitelisted
:
var person = [{
"identifier": "etanol",
"whitelisted": 3
}]
console.log(person[0].whitelisted);