POST请求在邮递员中有效,但在浏览器中无效

时间:2020-04-13 07:48:39

标签: javascript reactjs aws-lambda fetch

我正在制作将对象存储到Atlas数据库的lambda函数。
当我与邮递员发送请求时,一切都很好。 但是,当我从gatsby客户端发送邮件时,看不到响应数据。

fetch(
  "LAMBDA_URL",
  {
    method: "post",
    headers: {
      Accept: "application/json",
      "Content-Type": "application/json",
    },
    body: JSON.stringify(payload),
    mode: "no-cors",
  }
)
  .then(function (response) {
    if (response.status !== 200) {
      console.log(
        "Looks like there was a problem. Status Code: " + response.status
      )
      return
    }
    response.json().then(function (data) {
      console.log(data)
    })
  })
  .catch(function (err) {
    console.log("Fetch Error :-S", err)
  })

我可以看到请求被触发,对象看起来一切正常。 我从函数中得到的响应是200

这是我的lambda函数中的代码:

module.exports.create = (event, context, callback) => {
  context.callbackWaitsForEmptyEventLoop = false;

  const body = JSON.parse(event.body);

  if (
    !body ||
    !body.category ||
    !body.seed ||
    !body.email ||
    !body.description ||
    !body.recaptcha
  ) {
    callback(null, {
      statusCode: 400,
      body: 'Bad request',
    });
  }

  const { ['recaptcha']: captchaResponse, ..._seed } = body;

  // Validate the recaptcha
  const captcha = new googleRecaptcha({
    secret: process.env.RECAPTCHA_SECRET_KEY,
  });

  captcha.verify({ response: captchaResponse }, (error) => {
    if (error) {
      callback(null, {
        statusCode: error.statusCode || 500,
        headers: { 'Content-Type': 'text/plain' },
        body: JSON.stringify(error),
      });
    }
  });

  connectToDatabase().then(() => {
    Seed.create(_seed)
      .then((seed) =>
        callback(null, {
          statusCode: 200,
          body: JSON.stringify(seed),
        })
      )
      .catch((err) =>
        callback(null, {
          statusCode: err.statusCode || 500,
          headers: { 'Content-Type': 'text/plain' },
          body: 'Could not create the seed.',
        })
      );
  });
};

我可以看到我的数据存储在db中,因此至少对我有用。 :)

0 个答案:

没有答案