数据给我{url:......},但Data.url给我在nodejs中未定义

时间:2019-11-20 06:47:40

标签: javascript node.js

我有一个名为data的对象,该对象存储URL。如果我 resolve(data),它返回{url:.....} ,但是当我 resolve(data.url)时,它返回< em>未定义。

我会详细说明:-

request(options, function(error, response, data) {
      if (error) return reject(error);
      console.log('data --->', data); //returns {"url": "abc.com"}
      console.log('data.url --->', data.url); //returns undefined
      return resolve(data);
    });

如果我不能弄清楚问题的原因,那就太好了。 谢谢

2 个答案:

答案 0 :(得分:4)

我敢打赌data实际上是一个字符串"{"url": "abc.com"}",而不是一个对象。

您应该使用data = JSON.parse(data)之类的东西将其转换为对象。

或者,如果您想提高代码的健壮性,请data = parse(data),其中:

function parse(str) {
    try {
        return JSON.parse(str);
    }
    catch (error) {
        return {};
    }
}

答案 1 :(得分:0)

您必须在检查数据类型后解析数据。来自API的data类型为string,您正在从string访问该属性,而该属性不存在。

request(options, function(error, response, data) {
      if (error) return reject(error);
      if(typeof(data) == "string"){
        data = JSON.parse(data);
      }
      console.log('data --->', data); //returns {"url": "abc.com"}
      console.log('data.url --->', data.url); //returns undefined
      return resolve(data);
    });