【问题标题】:When I try to access a javascript object's key, it's telling me it's undefined even though it exists?当我尝试访问 javascript 对象的键时,它告诉我它是未定义的,即使它存在?
【发布时间】:2018-09-29 21:15:38
【问题描述】:

所以下面是我正在调用的函数:

function* makeRequest(payload) {
   return new Promise(function(resolve) {
      request(payload,
        function (error, response, body) {
            console.log('body', body);
            console.log('body.success', body.success);
            resolve(body);
        });
   });
}

console.log('body', body); 的输出如下:

{ "success": true, "challenge_ts": "2018-09-29T21:09:13Z", "hostname": "localhost" }

所以body 显然确实包含一个应该可以访问的对象。但是,当尝试访问body.success 时,我得到的只是undefined...关于为什么会出现这种情况的任何想法?

【问题讨论】:

  • 您是否忘记解析 json 字符串有效负载?记录一个对象将是“对象对象”或类似的。
  • 为什么是生成器函数?
  • console.log(typeof body)(确认@spender的怀疑)
  • @Bergi 是的,它是一个字符串而不是一个对象......这很奇怪。我想我会只是 JSON.parse(body) 呢?
  • @Mason0958 如果你不喜欢用.then()链接promise,你应该使用async/await。不是生成器。

标签: javascript json node.js request es6-promise


【解决方案1】:

因此,请求库中的响应正文可以是字符串。我能够使用@Bergi 向console.log(typeof body) 推荐的方法确认它是一个字符串。

所以解决方案是设置body = JSON.parse(body);,以便将字符串化对象解析回实际对象。

【讨论】:

    猜你喜欢
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2023-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多