Check out v4 of the Fauna CLI

v4 of the Fauna CLI is now in beta.

The new version introduces enhancements to the developer experience, including an improved authentication workflow. To get started, check out the CLI v4 quick start.

database.delete()

Deletes a database.

Signature

delete() => NullDatabaseDef

Description

The delete() method deletes a database.

Considerations

When you delete a database, its data becomes inaccessible and is asynchronously deleted. As part of the deletion process, Fauna recursively deletes:

  • Any keys scoped to the database.

  • The database’s child databases, including any nested databases.

Deleting a database with a large number of keys can exceed Transactional Write Ops throughput limits. This can cause throttling errors with a limit_exceeded error code and a 429 HTTP status code.

Deleting a database with a large number of child databases can cause timeout errors with a time_out error code and a 440 HTTP status code.

To avoid throttling or timeouts, incrementally delete all keys and child databases before deleting the database. See delete all keys and delete all child databases.

Parameters

None

Return value

Type Description

NullDatabaseDef

Database doesn’t exist or is inaccessible.

Examples

Basic example

Database.byName("childDB")!.delete()
Database.byName("childDB") /* deleted */

Delete all child databases

To avoid timeouts, you can incrementally delete all child databases for a database before deleting the database itself.

To stay within transaction size limits, use set.paginate() to perform the deletions over several queries instead of one.

// Gets all `Database` system collection documents.
// Uses `pageSize()` to limit the page size.
// Uses `paginate()` to project the after cursor.
let page = Database.all().pageSize(200).paginate()

// `paginate()` returns an object. The object's `data` property
// contains an Array of `Database` documents.
let data = page.data

// Use `forEach()` to delete each `Database` document in the
// `data` Array.
data.forEach(doc => doc.delete())

// Project the `after` cursor returned by `paginate()`.
// Use the cursor to iterate through the remaining pages.
page {
  after
}
{
  after: "hdWDxoq..."
}

Subsequent queries use the cursor and Set.paginate() to iterate through the remaining pages:

// Uses `Set.paginate()` to iterate through pages.
let page = Set.paginate("hdWDxoq...")

let data = page.data

data.forEach(doc => doc.delete())

page {
  after
}

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!