Привет. Я использую loopback в качестве серверной инфраструктуры для создания своего приложения. Так как я новичок в loopback4 и машинописи в целом, мне нужна ваша помощь. Я использую 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);
}
}