| functions | ||
| public | ||
| scripts | ||
| src | ||
| .gitignore | ||
| netlify.toml | ||
| package.json | ||
| README.md | ||
| webpack.config.js | ||
Netlify + FaunaDB 
Example of using FaunaDB with Netlify functions
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)
})
})
}

