Check out v4 of the Fauna CLI
v4 of the Fauna CLI is now GA. The new version introduces enhancements to the developer experience, including an improved authentication workflow. To get started, check out the CLI v4 quick start. Migrating from v3 of the CLI? See the CLI migration guide. |
Go quick start
Use Fauna’s Go driver to query e-commerce demo data in a Go app. The driver requires Go 1.19 or later.
-
Create a database with demo data
Log in to the Fauna Dashboard, and create a database with the following configuration:
-
Region group: Choose your preferred region group, which determines where your data resides.
-
Use demo data: Enabled.
-
Enable backups: Disabled.
Leave the other options as is.
-
-
Create an authentication secret
Fauna supports several types of authentication secrets. Create a key, which is a type of secret, with the built-in
server-readonly
role:-
In the Dashboard’s Explorer page, select your demo database.
-
In the database’s Keys tab, click Create Key.
-
Choose a Role of server (read-only).
-
Click Save.
-
Copy the Key Secret.
-
-
Set the FAUNA_SECRET environment variable
Set the
FAUNA_SECRET
environment variable to your key’s secret. Fauna’s client drivers can access the secret from this variable.export FAUNA_SECRET=<KEY_SECRET>
-
Install the Go driver
Create a new directory for your app and install the Go driver:
mkdir app cd app go mod init app go get github.com/fauna/fauna-go/v3
-
Create a basic app
In the
app
directory, create anapp.go
file and add the following code:package main import ( "fmt" "github.com/fauna/fauna-go/v3" ) func main() { // Initialize the client to connect to Fauna // using the `FAUNA_SECRET` environment variable. client, clientErr := fauna.NewDefaultClient() if clientErr != nil { panic(clientErr) } // Compose a query using an FQL template string. // The query calls the `Product` collection's // `sortedByPriceLowToHigh()` index. It projects the `name`, // `description`, and `price` fields covered by the index. query, _ := fauna.FQL(` Product.sortedByPriceLowToHigh() { name, description, price } `, nil) // Run the query. paginator := client.Paginate(query) // Iterate through the results. for { page, _ := paginator.Next() var pageItems []any page.Unmarshal(&pageItems) for _, item := range pageItems { jsonData, _ := json.Marshal(item) fmt.Println(string(jsonData)) } if !paginator.HasNext() { break } } }
-
Run the app
Run the script from the
app
directory. The script prints a list of e-commerce products from the demo data in the terminal.go run app.go
Is this article helpful?
Tell Fauna how the article can be improved:
Visit Fauna's forums
or email docs@fauna.com
Thank you for your feedback!