早上好,我正试图从发布到我的Mongo数据库的注册表单中获取用户信息,然后将用户注册到Mailchimp。我目前使用的代码是:
require("dotenv").config();
const express = require("express"),
expressSanitizer= require("express-sanitizer"),
router = express.Router(),
passport = require("passport"),
User = require("../models/user"),
middleware = require("../middleware"),
superagent = require('superagent'),
mailchimp = require('@mailchimp/mailchimp_marketing'),
request = require('request'),
https = require('https');
//REGISTER USER
router.post("/register", function (req, res){
var newUser = {
firstName: req.sanitize(req.body.firstName),
lastName: req.sanitize(req.body.lastName),
email: req.sanitize(req.body.email),
username: req.sanitize(req.body.username)
};
User.register(newUser, req.body.password, function(err,user){
if(err){
// DISPLAYS PASSPORT ERROR
console.log(err);
return res.render("/login");
}
passport.authenticate("local")(req, res, function(){
console.log(user);
res.redirect("/insider/resources");
});
});
// Mailchimp Logic
const firstName = req.sanitize(req.body.firstName);
const lastName = req.sanitize(req.body.lastName);
const email = req.sanitize(req.body.email);
var data = {
members:[ {
email_address: email,
status: "subscribed",
merge_fields: {
FNAME: firstName,
LNAME: lastName
}
}]
};
var jsondata = JSON.stringify(data);
const url = `https://us3.api.mailchimp.com/3.0/lists/`+process.env.MAILCHIMPLIST;
const options = {
method: "POST",
body: data,
auth: process.env.MAILCHIMP
};
const request = https.request(url, options, function(response){
response.on("data", function (data) {
console.log(JSON.parse(data));
});
if(response.statusCode === 200){
res.render("/insider/resources");
} else {
res.render("landing");
}
});
request.write(jsondata);
request.end();
});
在这个示例中,process.env.MAILCHIMP是我存储的API,process.env.MAILCCHIMPLIST是我想要将用户放入的受众。
A这一点我知道用户已经注册,因为我的console.log((显示了在Mongo中注册的用户。在这之后,我从Mailchimp的API得到了这个错误:
{
type: 'https://mailchimp.com/developer/marketing/docs/errors/',
title: 'API Key Invalid',
status: 401,
detail: "Your API key may be invalid, or you've attempted to access the wrong datacenter.",
instance: '40471ba2-403c-9846-ef76-f3cb6b39087f'
}
如果有人能帮我找出我犯的错误,我将不胜感激
在查看了我的代码后,我意识到我没有安装两个依赖项,感谢任何试图提供帮助的人,但使其工作的确切代码是:
// REQUIREMENTS
require("dotenv").config();
const express = require("express"),
expressSanitizer= require("express-sanitizer"),
router = express.Router(),
passport = require("passport"),
User = require("../models/user"),
mailchimp = require('@mailchimp/mailchimp_marketing'),
request = require('request'),
https = require('https');
// Mailchimp Logic in your route
let firstName = req.sanitize(req.body.firstName);
let lastName = req.sanitize(req.body.lastName);
let email = req.sanitize(req.body.email);
var data = {
members:[ {
email_address: email,
status: "subscribed",
merge_fields: {
FNAME: firstName,
LNAME: lastName
}
}]
};
var jsonData = JSON.stringify(data);
const url = 'https://us3.api.mailchimp.com/3.0/lists/'+process.env.MAILCHIMPLIST;
const options = {
method: "POST",
auth: "archit:"+process.env.MAILCHIMPAPI,
};
const request = https.request(url, options, (response) => {
response.on("data", (data) => {
console.log(JSON.parse(data));
});
});
request.write(jsonData);
request.end();