NodeJS 如何读取mailchimp响应的状态码?

8yoxcaq7  于 2022-12-18  发布在  Node.js
关注(0)|答案(2)|浏览(121)

我正在玩mailchimp API。代码片段将用户添加到邮件列表中,然后会显示成功或失败消息。不幸的是,我无法掌握状态代码。似乎在添加用户成功或失败的情况下,我会得到不同的响应。如果成功,我可以通过response.statusCode访问状态,但在失败的情况下,这不起作用:

const express = require('express');
const request = require('request');
const bodyParser = require('body-parser');
const https = require('https');
const mailchimp = require("@mailchimp/mailchimp_marketing");

const app = express();
//Includes local/static files
app.use(express.static('public'));
// Ads body parser and the function to read posted data
app.use(bodyParser.urlencoded({extended: true}));

mailchimp.setConfig({
  apiKey: "XXX",
  server: "us10",
});

app.get('/', function(req, res){
  res.sendFile(__dirname+'/sign_up.html');
});

app.post('/', async function(req, res) {

  //Audience ID
  const listId = 'XXX'

  const response = await mailchimp.lists.addListMember(listId, {
  email_address: req.body.email,
  status: "subscribed",
  merge_fields: {
    FNAME: req.body.firstName,
    LNAME: req.body.lastName
  }
});

  console.log(response.statusCode);

  if (response.statusCode == 200) {
    res.send(response.statusCode);
  } else {
    res.send(response.statusCode);
  }
})

app.listen('3000', function() {
  console.log('Hello World');
})

顺便问一下,为什么mailchimp使用异步函数?
感谢您的支持!
贝斯特马蒂亚斯

6tr1vspr

6tr1vspr1#

使用async关键字可以使函数异步。

async makes a function return a Promise

await makes a function wait for a Promise

无论何时在函数中使用await,都应该使用async使其异步

s5a0g9ez

s5a0g9ez2#

我不知道这是否正确,但它对我很有效。我使用了.then()方法,您可以在MDN docs中了解更多信息

async function addMember() {
        const response = await mailchimp.lists.addListMember(listID, {
            email_address: email,
            status: "subscribed",
            merge_fields: {
                FNAME: firstName,
                LNAME: lastName,
            }
        }).then(
            (value) => {
                console.log("Successfully added contact as an audience member.");
                res.sendFile(__dirname + "/success.html");
            },
            (reason) => {
                res.sendFile(__dirname + "/failure.html");
            },
        );
    }

My code

相关问题