尝试将成员添加到列表中,但一直收到此错误:无法验证提交的资源。有关特定字段的详细信息,请参阅'errors'数组。
以下是完整的输出-
Server is running on port 3000
John Doe [email protected]
{
type: 'https://mailchimp.com/developer/marketing/docs/errors/',
title: 'Invalid Resource',
status: 400,
detail: "The resource submitted could not be validated. For field-specific details, see the 'errors' array.",
instance: 'd2186fc0-10d0-22af-ac4b-b04d7c6a61b7',
errors: [
{
field: 'email_address',
message: 'This value should not be blank.'
}
]
}
字符串
下面是app.js文件:
const express = require("express");
const app = express();
app.use(express.static("public"));
const mailchimp = require("@mailchimp/mailchimp_marketing");
const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: true }));
const request = require("request");
const https = require("https");
const axios = require("axios");
const { response } = require("express");
const port = 3000;
app.get("/", (req, res) => {
res.sendFile(__dirname + "/signup.html");
mailchimp.setConfig({
apiKey: 'rupak:ec9e6dcf527*****8655da1b-us13',
server: "us13"
});
});
app.post("/", function(req, res){
const firstName = req.body.firstName;
const lastName = req.body.secondName;
const email = req.body.email;
console.log(firstName, lastName, email);
const data = {
members: [
{
email_address: email,
status: "subscribed",
merge_fields: {
FNAME: firstName,
LNAME: lastName
}
}
]
}
const jsonData = JSON.stringify(data);
let url = 'https://us13.api.mailchimp.com/3.0/lists/20b****bce/members' ;
const options = {
method: "POST",
auth: "rupak:ec9e6dcf527*****8655da1b-us13"
}
const request = https.request(url, options, (response) => {
response.on("data", (data) => {
console.log(JSON.parse(data));
})
})
request.write(jsonData);
request.end();
});
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
型
据我所知,email_address字段不是空的,因为我已经记录了电子邮件的输出,我可以看到我输入的电子邮件正在显示。
编辑
我尝试了另一个method,但现在我得到了这个很长的错误消息,我根本不明白
这里有一小部分
Error: Bad Request
at Request.callback (C:\Users\Rupak\Desktop\Projects\Web Development\Newsletter-Signup\node_modules\superagent\lib\node\index.js:699:13)
at C:\Users\Rupak\Desktop\Projects\Web Development\Newsletter-Signup\node_modules\superagent\lib\node\index.js:903:18
at Stream.<anonymous> (C:\Users\Rupak\Desktop\Projects\Web Development\Newsletter-Signup\node_modules\superagent\lib\node\parsers\json.js:19:7)
at Stream.emit (node:events:390:28)
at Unzip.<anonymous> (C:\Users\Rupak\Desktop\Projects\Web Development\Newsletter-Signup\node_modules\superagent\lib\node\unzip.js:55:12)
at Unzip.emit (node:events:390:28)
at endReadableNT (node:internal/streams/readable:1343:12)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
型
这是更新app.js文件
//jshint esversion: 6
const express = require('express');
const bodyParser = require('body-parser');
const mailchimp = require('@mailchimp/mailchimp_marketing');
const app = express();
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(express.static("public"));
app.get("/", function(req, res) {
res.sendFile(__dirname + "/signup.html");
//setup mailchimp
mailchimp.setConfig({
apiKey: "ec9e6dcf527*****8655da1b-us13",
server: "us13"
})
});
app.post("/", function(req, res) {
var firstName = req.body.firstName;
var lastName = req.body.secondName;
var email = req.body.email;
console.log(`${firstName} ${lastName} ${email}`);
const run = async () => {
//testing if server is working fine
// const response = await mailchimp.ping.get();
// console.log(response);
//add member to list
const response = await mailchimp.lists.addListMember("20b****bce", {
email_address: req.body.email,
status: "subscribed",
merge_fields: {
FNAME: req.body.firstName,
LNAME: req.body.secondName
}
})
console.log(response);
}
run();
});
app.listen(3000, function() {
console.log("Server is running");
});
型
任何帮助将不胜感激
3条答案
按热度按时间rnmwe5a21#
我认为问题是你有一个
members
数组,而the api you are using一次只接受一个成员。如果你把它改为:字符串
此外,我认为您可以通过使用
@mailchimp/mailchimp_marketing
模块来简化您的调用,就像您在the Mailchimp documentation中的node.js示例中找到的那样。您正在导入Axios,但您正在使用request
进行调用。That package seems to be deprecated。希望这对你有帮助。
6ljaweal2#
我发现了错误。显然我不能直接这样做
字符串
我需要创建一个用户的对象并将值存储在其中。然后我必须在向列表添加成员时访问对象中的值。
型
如果有人能告诉我这是为什么,我会很感激。我们在向服务器发送数据时需要键值对吗?如果需要,为什么不直接从请求中获取值?
gopyfrb33#
这个对我很有效
字符串