使用 mailchimp-api-v3 的批量调用中不超过 10 个段成员

No More than 10 Segment Members in A Batch Call with mailchimp-api-v3

我在 node js 中使用 mailchimp-api-v3 已经有一段时间了,我认为它是一个很棒的软件包,而且非常易于使用。但是,最近我需要使用它的 .batch() 方法 GET 对多个细分的细分成员。

不幸的是,即使有超过 10 个成员并且在调用中指定了超过 10 的 count 查询参数值,每个段也只会返回 10 个成员。有

const mc  = require('./mc-config');
const Mailchimp = require('mailchimp-api-v3');
const mailchimp = new Mailchimp(mc.apiKey);
const list_id   = mc.list_id;

以下每个 returns 超过 10 个成员,符合预期:

mailchimp.request({method:'GET',path:`/list/${list_id}/segments/${segment_id}/members`, query: {count: 1000}})....;
//or
mailchimp.get(`/lists/${list_id}/segments/${segment_id}/members?count=1000`)....;

但是,以下仅 returns 每个分段最多 10 个分段成员:

mailchimp.batch([
    {method:'GET',path:`/lists/${list_id}/segments/${segment_id_1}/members`, query: {count:1000}},
    {method:'GET',path:`/lists/${list_id}/segments/${segment_id_2}/members`, query: {count:1000}},
    {method:'GET',path:`/lists/${list_id}/segments/${segment_id_3}/members`, query: {count:1000}},
    {method:'GET',path:`/lists/${list_id}/segments/${segment_id_4}/members`, query: {count:1000}},
    {method:'GET',path:`/lists/${list_id}/segments/${segment_id_5}/members`, query: {count:1000}}
])....;

我想也许 query 参数被完全忽略了,但是当我添加以下参数时,我得到了更多的成员返回给少于 10 个成员的段:

.... include_cleaned:true, include_unsubscribed:true ....

还有其他人遇到过这个问题吗?有什么我想念的吗?

Promise.all()好像还可以,可惜我可以用.batch():

(async () => {
    try {
        const segments = [segment_id1, segment_id2, segment_id3, segment_id4];
        const members = await Promise.all(
            segments.map(tag => mailchimp.get(`/lists/${list_id}/segments/${tag}/members?count=1000`))
        );
        //see how many members are returned
        console.log( members.map(m => m.members.length) );
    } catch( err ) {
        console.log( err );
    } finally {
        console.log( 'All done' );
    }
})();

对于每个 segment/tag 的成员超过 10 个,返回所有成员(最多 1000 个)。