Skip to content

Rows

Each piece of data or information in Appwrite Databases is a row. Rows have a structure defined by the parent table.

Create rows

Permissions required

You must grant create permissions to users at the table level before users can create rows. Learn more about permissions

In most use cases, you will create rows programmatically.

During testing, you might prefer to create rows in the Appwrite Console. To do so, navigate to the Rows tab of your table and click the Add row button.

List rows

Permissions required

You must grant read permissions to users at the table level before users can read rows. Learn more about permissions

Rows can be retrieved using the List Row endpoint.

Results can be filtered, sorted, and paginated using Appwrite's shared set of query methods. You can find a full guide on querying in the Queries Guide.

By default, results are limited to the first 25 items. You can change this through pagination.

Update row

Permissions required

You must grant update permissions to users at the table level or row level before users can update rows. Learn more about permissions

In most use cases, you will update rows programmatically.

Upsert rows

Upsert is a combination of "update" and "insert" operations. It creates a new row if one doesn't exist with the given ID, or updates an existing row if it does exist.

In most use cases, you will upsert rows programmatically.

Permissions required

You must grant create permissions to users at the table level, and update permissions to users at the table or row level before users can upsert rows. Learn more about permissions

Type safety with models

Mobile and native SDKs provide type safety when working with rows through the nestedType parameter. This allows you to specify custom model types for complete auto-completion and type safety.

Define your model

Create a data class or struct that matches your table structure:

Using type-safe operations

Use the nestedType parameter for full type safety in native SDKs, or generics in web SDKs:

Model methods

Models returned by native SDKs include helpful utility methods:

Generate types automatically

You can automatically generate model definitions for your tables using the Appwrite CLI. Run appwrite types collection to generate types based on your database schema.

Permissions

In Appwrite, permissions can be granted at the table level and the row level. Before a user can create a row, you need to grant create permissions to the user.

Read, update, and delete permissions can be granted at both the table and row level. Users only need to be granted access at either the table or row level to access rows.

Learn about configuring permissions.