278 words
1 minute
Post Data to MongoDB serverless using Netlify Functions and AWS Lambdas

This tutorial is going to be very similar to yesterdays, so you may see some repeat code/content. We’re going to jump right into the code. In order to get this working we’re going to install both the co and mongoose packages using your package manager of choice.

npm install mongoose or yarn add mongoose

npm install co or yarn add co

Code#

var co = require('co');
var mongoose = require('mongoose');

let conn = null;

const uri = 'mongodb://username:password@mongourl:port/databaseName';

exports.handler = function(event, context, callback) {
  const requestBody = JSON.parse(event.body);
  context.callbackWaitsForEmptyEventLoop = false;

  run(requestBody).
    then(res => {
      callback(null, res);
    }).
    catch(error => callback(error));
};

function run(requestBody) {
  return co(function*() {
    if (conn == null) {
      conn = yield mongoose.createConnection(uri, {
        bufferCommands: false,
        bufferMaxEntries: 0
      });
      conn.model('collectionName', new mongoose.Schema({
        schedule: String,
        occupancy: Number,
        count: Number,
        price: Number,
        time: String,
        link: String
      }));
    }

    const M = conn.model('Bookings');
    const doc = yield M.findOneAndUpdate({"collectionName": requestBody.schedule}, {$set:{count: requestBody.count}});
    console.log(doc)
    const response = {
      statusCode: 200,
      body: JSON.stringify(doc)
    };
    return response;
  });
}

If you want an in depth explanation of the code feel free to follow my example from yesterday where I explained how to get data from MongoDB with Netlify functions. The only difference in code is that your const doc variable will be making a request to find a specific entry and update using the findOneAndUpdate method. An example post request for your new lambda would be

          axios.post('/.netlify/functions/postSchedule', update).then(res => {
            this.setState({success: true});
          })

As you can see, nothing changes in how you would code your friend end to make a post request! Tomorrow I will show an example for another function, this time we will be integrating our lambda with Stripe to make payments without a backend.

Post Data to MongoDB serverless using Netlify Functions and AWS Lambdas
https://edwardbeazer.com/posts/post-data-to-mongodb-serverless-using-netlify-functions-and-aws-lambdas/
Author
Edward Beazer
Published at
2018-08-01