嗨,我正在使用环回作为服务器端框架来创建我的应用程序。由于我一般不熟悉loopback4和Typescript,因此需要您的帮助。我正在使用axios将订阅者的电子邮件发送到MailChimp,事实是,电子邮件已成功传递到MailChimp,但未保存在数据库中,后端抛出错误TypeError: Failed to fetch
。
您认为什么可能导致此问题?
我的代码在后面。
MailChimp.ts
const axios = require('axios');
export async function keepSubscribers(email: string) {
const data = {
members: [
{
// eslint-disable-next-line @typescript-eslint/camelcase
email_address: email,
status: 'subscribed'
}
]
}
const postData = JSON.stringify(data)
const options = {
url: 'https://us20.api.mailchimp.com/3.0/lists/b0404295b1',
method: 'POST',
headers: {
Authorization: 'auth 71634e399a09a918610fd25094e6731c-us20'
},
data: postData
}
return new Promise((resolve, reject) => {
axios(options, async (error: object, response: { statusCode: number }) => {
try {
if (response.statusCode === 200) {
return resolve("Email is successfully added")
} else {
return error
}
} catch (err) {
reject("Error")
}
})
})
}
WaitList.Controller.ts
/* eslint-disable @typescript-eslint/camelcase */
import {
repository
} from '@loopback/repository';
import {
post,
getModelSchemaRef,
requestBody,
HttpErrors,
} from '@loopback/rest';
import { Waitlist } from '../models';
import { WaitlistRepository } from '../repositories';
import { validateCredentialsWaitlist } from '../services/validator';
import _ = require('lodash');
//const app = require('loopback-component-mailchimp')
import { keepSubscribers } from '../services/MailChimp'
export class WaitlistControllerController {
constructor(
@repository(WaitlistRepository)
public waitlistRepository: WaitlistRepository,
) { }
@post('/waitlists', {
responses: {
'200': {
description: 'Waitlist model instance',
content: { 'application/json': { schema: getModelSchemaRef(Waitlist) } },
},
},
})
async create(
@requestBody({
content: {
'application/json': {
schema: getModelSchemaRef(Waitlist),
},
},
})
waitlist: Waitlist,
): Promise<Waitlist> {
const foundUser = await this.waitlistRepository.findOne({
where: {
email: waitlist.email,
},
});
if (foundUser) {
throw new HttpErrors.Forbidden(`Email ${waitlist.email} already exists`);
}
await keepSubscribers(waitlist.email)
validateCredentialsWaitlist(_.pick(waitlist, ['email', 'firstName', 'secondName']));
return this.waitlistRepository.create(waitlist);
}
}
const axios = require('axios');
export function keepSubscribers(email: string) {
const data = {
members: [
{
// eslint-disable-next-line @typescript-eslint/camelcase
email_address: email,
status: 'subscribed'
}
]
}
const postData = JSON.stringify(data)
const options = {
url: 'https://us20.api.mailchimp.com/3.0/lists/b0404295b1',
method: 'POST',
headers: {
Authorization: 'auth 71634e399a09a918610fd25094e6731c-us20'
},
data: postData
}
axios(options).then(function (response: object) {
console.log(response);
})
.catch(function (error: object) {
console.log(error);
});
}
并从await
中的keepSubscribers(waitlist.email)
中删除[C0