我有一个名为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);
});
如果我不能弄清楚问题的原因,那就太好了。 谢谢
答案 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);
});