Получить плейлист или библиотеку текущего пользователя, а также треки / исполнителей

Я исследовал это изрядное количество и не смог найти ничего, касающегося этой конкретной темы.

Я хочу получить всех исполнителей из библиотеки текущего пользователя или даже из определенного плейлиста, например, "помеченного" плейлиста.

Когда я пытаюсь попасть в исполнителей или треки в плейлисте, я получаю 'undefined' назад.

Я делаю что-то неправильно?

Вот некоторый основной javascript, который я использую для отображения объекта библиотеки, и все, что я получаю, - это то, что на изображении, но я не знаю, как попасть в отдельные треки и исполнителей. Любая помощь?

require(['$api/models','$api/library'], function(models, library){
    'use strict';
    var Library = library.Library.forCurrentUser();
    console.log(Library.starred);
});

Вот изображение модели, которую я возвращаю: http://i.imgur.com/ERo0Cx9.png

1 ответ

Это немного сложнее, чем это. Library.starred это Playlist ленивый объект загружает атрибуты. Таким образом, вам нужно передать, какие атрибуты вы хотите загрузить, в этом случае tracks, Так как треки - это коллекция, вам нужно сделать моментальный снимок, а когда у вас есть треки, вам нужно указать, какие атрибуты загружать с треков.

Вот код для извлечения всех треков из вашего избранного плейлиста и распечатки их имени и имени:

require(['$api/models','$api/library'], function(models, library){
    'use strict';
    var Library = library.Library.forCurrentUser();
    Library.starred.load('tracks').done(function(playlist) {
        playlist.tracks.snapshot().done(function(tracks) {
            var promises = [];
            // we fetch all the tracks
            for (var i = 0, l = tracks.length; i < l; i++) {
                var track = tracks.get(i);
                // fetch the information we need from the tracks
                // e.g. uri and name
                promises.push(track.load('uri', 'name'));
            }

            models.Promise.join(promises).done(function(tracksPromises) {
                tracksPromises.forEach(function(tp) {
                    console.log(tp.uri + ' - ' + tp.name);
                });
            });
        });
    });
});
Другие вопросы по тегам