使用 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 个)。
我在 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 个)。