在Meteor中将Array转换为Query字符串

时间:2014-09-09 04:30:24

标签: javascript meteor query-string

我正在尝试从Echonest获取艺术家资料。我需要在查询字符串中多次使用名为“bucket”的参数。我试图用一个数组设置它与我传递的对象。这可以在数组中传递吗?

我有这个:

bucket:['biographies', 'images', 'artist_location', 'urls'];

我想要这个:

bucket=biographies&bucket=images&bucket=artist_location&bucket=urls

客户端:

getArtistProfile = function(artistName){
    var params = {
        format:'json',
        bucket:['biographies', 'images', 'artist_location', 'urls'],
        name:artistName
    };

     Meteor.call('getEchoNestData', params, function(error, result) {
        if (error)
            console.warn(error);
        else
            console.log(result);
    });
};

服务器方法:

getEchoNestData:function(type, params){
    check(type, String);

    params.api_key = Meteor.settings.echonest.apiKey;

    var result = HTTP.get('http://developer.echonest.com/api/v4/artist/profile' + type, {timeout:5000, params:params});
    return result;
 }

1 个答案:

答案 0 :(得分:1)

我可能会误解你的问题,但似乎你在问如何动态构建一组查询字符串参数。你可以有这样一个简单的帮手:

function getParams( arr ) {
    var params = [];

    for ( i = 0; i < arr.length; ++i ) {
        params.push( 'bucket=' + arr[ i ] );
    }

    return params.join( '&' );
}

传入你的param值数组,如下所示:

var params = getParams( bucket );

http://jsfiddle.net/7vaLcjxs/