Promise / axios:TypeError:无法提取

问题描述 投票:0回答:1

嗨,我正在使用环回作为服务器端框架来创建我的应用程序。由于我一般不熟悉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);
  }
}
mongodb axios loopbackjs
1个回答
0
投票
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

© www.soinside.com 2019 - 2024. All rights reserved.