使用ember-data访问SoundCloud中的嵌套对象json

时间:2015-07-07 22:05:09

标签: javascript json ember.js ember-data ember-cli

我正在使用soundCloud json播放用户收藏的歌曲。

你可以在这里看到

enter image description here

我可以访问我的收藏夹曲目但我无法访问用户ID和用户名。

这里我使用的代码返回我最喜欢的属性,并且我已经评论了无法返回用户属性的代码。

我在控制台中收到此错误"未捕获TypeError:item.user.forEach不是函数"

我做错了什么?它是访问我的用户属性的正确方法吗?

model: function(params) {
    var artist, favoriteListProxy, self;
    self = this;
    artist = params.artist;
    this.controllerFor('application').set('artistName', artist);
    favoriteListProxy = Ember.ArrayProxy.create({
        content: []
    });
    return new Ember.RSVP.Promise(function(resolve, reject) {
        return SC.get("/users/" + 'mannaio' + "/favorites", {limit: 40}, function(favorites) {
            if (favorites.length) {
                favorites.forEach(function(item, index, arr){
                    var favorite;
                    favorite = self.createFavoritelist(item, favoriteListProxy);
                    // return item.user.forEach(function(user, index, arr){
                    //     return user = self.createUser(user, favorite);
                    // });
                });
                favorites = favoriteListProxy.get('content')
                return resolve(favorites);
            }
        });
    });
},

createFavoritelist: function(favorite, arr) {
    var record;
    record = this.store.createRecord('favorite', {});
    record.setProperties({
        id: favorite.id,
        title: favorite.title,
        artwork_url: favorite.artwork_url,
        genre: favorite.genre
    });
    arr.pushObject(record);
    return record;
},

// createUser: function(user, favorite) {
//     var record;
//     record = this.store.createRecord('user', {});
//     record.setProperties(user).set('favorite', favorite);
//     return record;
// },

1 个答案:

答案 0 :(得分:5)

在我看来,item.userObject而不是Array。因此,它没有forEach方法。

所以试试:

return self.createUser(item.user, favorite);