4.1 KiB
Netlify + FaunaDB
Example of using FaunaDB with Netlify functions
undefined Setup & Run Locally
About this application
This application is using React for the frontend, Netlify Functions for API calls, and FaunaDB as the backing database.
Setup & Run Locally
-
Clone down the repository
git clone git@github.com:netlify/netlify-faunadb-example.git -
Install the dependencies
npm install -
Bootstrap your FaunaDB table
npm run bootstrap -
Set your Fauna API key value in your terminal enviroment
You can create faunaDB keys here: https://dashboard.fauna.com/db/keys
In your terminal run the following command:
export FAUNADB_SECRET=YourFaunaDBKeyHere -
Run project locally
npm start
TLDR; Quick Deploy
- Sign up for free FaunaDB account,
- Grab your FaunaDB API key
- Click the Deploy to Netlify Button
Tutorial
First lets create the
- Step faunaDB
- Create /functions/todos-create.js
1. Setup FaunaDB
First things first, we need to setup a FaunaDB account and get our API key we will use to scaffold out our todos database.
Head over to https://app.fauna.com/sign-up to create a free Fauna Account.
Then login, and create your API Key
[IMAGE]
2. Create a function
Lambda functions have this signature:
exports.handler = (event, context, callback) => {
// event has informatiom about the path, body, headers etc of the request
console.log('event', event)
// context has information about the lambda environment and user details
console.log('context', context)
// The callback ends the execution of the function and returns a reponse back to the caller
return callback(null, {
statusCode: 200,
body: JSON.stringify({
data: '⊂◉‿◉つ'
})
})
}
We are going to be using the FaunaDB sdk to call into our todos index.
/* Import faunaDB sdk */
import faunadb from 'faunadb'
const q = faunadb.query
const client = new faunadb.Client({
secret: process.env.FAUNADB_SECRET
})
exports.handler = (event, context, callback) => {
const data = JSON.parse(event.body)
console.log("Function `todo-create` invoked", data)
const todoItem = {
data: data
}
/* construct the fauna query */
return client.query(q.Create(q.Ref("classes/todos"), todoItem))
.then((response) => {
console.log("success", response)
return callback(null, {
statusCode: 200,
body: JSON.stringify(response)
})
}).catch((error) => {
console.log("error", error)
return callback(null, {
statusCode: 400,
body: JSON.stringify(error)
})
})
}

