如何获取异步服务返回值的数据?

时间:2018-06-02 11:03:22

标签: javascript angularjs

我在从api调用返回实际数据 out 时遇到了一些麻烦。我可以看到输出到日志中的值,但是当我尝试使用 data [0] .admin_url 访问它时,它会返回 undefined

db.getCollection('test').find().noCursorTimeout().snapshot().forEach( function(data) {  
  data.firstname = hex_md5(data.firstname);   
  db.getCollection('test').save(data); 
});

这称之为:

this.apiService
    .getCCUrls()
    .then(function(data){
        console.log(data); //output in the image below
        console.log(data[0].admin_url); //returns undefined
    });

介于两者之间有一些简单的实用程序代码,但最终它可以实现此功能......

APIService.prototype.getCCUrls = function() {
    return this.makePublicApiRequest({
        method: 'GET',
        url: '/v1/cc-instances',
    });
};

最后,这是console.log中输出的内容:

enter image description here

因此,在我的第一组代码中,如何访问admin_url,agent_url或输入变量?

2 个答案:

答案 0 :(得分:0)

这个问题可能是因为下划线是\u0332下划线:

var x = [{"admin\u0332url":"/cca"}];
console.log(x);
console.log(x[0].admin_url);
console.log(x[0].admin\u0332url);
console.log(Object.keys(x[0]))

Developer Console不退格,因此\u0332下划线看起来与ASCII下划线相同。

如果您尝试使用使用ASCII下划线的字符串访问它,x[0].admin_url将为undefined

答案 1 :(得分:-1)

您需要访问响应的数据属性,因此应该是

this.apiService
    .getCCUrls()
    .then(function(data){
        console.log(data.data[0].admin_url);
    });