浏览 JS 对象

navigate through JS object

本文关键字:对象 JS 浏览      更新时间:2023-09-26

我正在尝试浏览Javascript对象,但每次出现错误时:类型错误:无法读取未定义的属性"属性"

这是我的代码:

var attributes = [];
var params = {
  QueueUrl: 'AMAZON_QUEUE', /* required */
  AttributeNames: [
    'ApproximateNumberOfMessages',
    /* more items */
  ]
};
setInterval(queueAttributes, 2000) 
function queueAttributes () {
sqs.getQueueAttributes(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else  console.log (data);   
        attributes.push(data);           // successful response
        setTimeout(queueChecker, 1000);
});
}
function queueChecker (attributes) {
if (attributes.Attributes.ApproximateNumberOfMessages == 0) {
    console.log ('queueEmpty');
}
else
{
    console.log (attributes.Attributes.ApproximateNumberOfMessages + 'messages in queue');
};
}

有人知道我应该如何调用属性变量中包含的 ApproxNumberOfMessages 值吗?

我从 SQS 得到的响应以及属性变量的内容如下:

  { ResponseMetadata: { RequestId: '6c43d9d6-281d-5bfa-b7f5-94e165b49662' },
  Attributes: { ApproximateNumberOfMessages: '0' } }

谢谢。

您正在以数组的形式访问属性。

attributes.push(data);

继续在数组属性中添加元素。如果您希望以以下方式访问属性

attributes.Attributes.ApproximateNumberOfMessages

您需要将属性声明为对象:

var attributes = {
   Attributes:{
      ApproximateNumberOfMessages:0
   }
}

然后在函数 queueAttributes() 中,您可以按如下方式填充属性对象...

function queueAttributes () {
   sqs.getQueueAttributes(params, function(err, data) {
   if (err) console.log(err, err.stack); // an error occurred
   else  console.log (data);   
        //attributes.push(data);           // successful response
        attributes.Attributes.ApproximateNumberOfMessages = data;
        setTimeout(queueChecker, 1000);
  });
}

假设数据要填充在属性中。属性.近似消息数。

希望对您有所帮助!