RSVP Form

node v8.17.0
version: 1.0.2
endpointsharetweet
var express = require('@runkit/runkit/express-endpoint/1.0.0'); var app = express(exports); var bodyParser = require('body-parser'); var multer = require('multer'); // v1.0.5 var upload = multer(); // for parsing multipart/form-data var cors = require('cors'); var corsOptions = { origin: '*', methods: ['GET','PUT','POST','DELETE','OPTIONS'], allowedHeaders: ['Accept', 'x-csrf-token', 'Content-Type', 'content-type'], }; app.use(cors(corsOptions)); app.use(bodyParser.json()); // for parsing application/json app.options('/welcome_party', cors(corsOptions)); app.post('/welcome_party', async (req, res) => { try { // post to dynamo db let postData = req.body; console.log(postData); await saveToDB({ name: postData.name, email: postData.email, transportation: postData.transportation, guests: postData.quantity }); // return response return res.json({ success: true, data: req.body }); } catch (e) { console.log(e); // return error response return res.status(500).json({ success: false, data: req.body, error: e }); } });
AWS Stuff for Dyanmo DB:
let AWS = require('aws-sdk'); AWS.config.update({ accessKeyId: process.env.aws_access_key_id, secretAccessKey: process.env.aws_secret_access_key, region: 'us-west-2', // endpoint: 'http://localhost:8000' }); const table = 'welcome-party-invitations'; const docClient = new AWS.DynamoDB.DocumentClient(); const uuidv4 = require('uuid/v4'); let saveToDB = async function(values) { let now = new Date(); let params = { TableName: table, Item: { "rsvp_id": uuidv4(), "name": values.name, "transportation": values.transportation, "guests": values.guests, "email": values.email, "created_at": now.toString() } }; docClient.put(params, (err, data) => { if (err) { console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2)); return "error"; } else { console.log("Added item:", JSON.stringify(data, null, 2)); return true; } }); };
Uncomment to test saving to DynamoDB
// testing // await saveToDB({name: "Matt - Test", needs_transportation: true, guests: 2});
Loading…

no comments

    sign in to comment