我正在制作将对象存储到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中,因此至少对我有用。 :)