Data
Database viewer
Browse your apps' tables, collections and keys, and run read-only queries, without leaving the panel.
Browse data, next to each database on a project's Databases page, opens a read-only viewer. For SQLite, Browse SQLite databases lists the database files the app keeps in DATA_DIR.
Browsing
- On the left: the tables, collections or keys, with their row counts.
- On the right: a page of 50 rows. Click a column to sort by it, then again to reverse it. Click a row to see every value whole, with JSON indented.
- NULL, binary data and long text are marked as such. Values longer than 2,000 characters are cut, with their full length shown.
The sidebar shrinks to its icons on this page, to give the rows the width. The button at its bottom opens the whole menu.
Queries
Above the rows:
- SQL (SQLite, PostgreSQL, MySQL): run a query. One statement, without
;in it (also not inside quotes), up to 500 rows and 5 seconds. ⌘↵ or Ctrl+↵ runs it. - MongoDB: filter a collection with JSON, like
{"status": "active"}or{"_id": {"$oid": "…"}}. Filters that run JavaScript on the server ($where,$function,$accumulator) are refused. - Redis: narrow the keys with a pattern, like
session:*. A key shows its value: a string, a hash's fields, a list or a sorted set page by page, and when it expires.
Read-only, by design
The viewer reads with the app's own login, as the app's own Linux user, in a short sandboxed job for each page you open. It sees exactly what the app can see, and never another app's data.
Nothing it runs can write, and each engine enforces that itself:
| Engine | How |
|---|---|
| SQLite | Opened read-only, with query_only on |
| PostgreSQL | Every transaction read-only, and no statement longer than 5 seconds |
| MySQL | A read-only session, with the same 5-second limit |
| MongoDB | find only, with no server-side JavaScript |
| Redis | Read commands only |
A query with a ; in the middle is refused before anything runs, so one statement can't end the read-only transaction and start another.
Editing rows isn't part of the viewer. To change data, use your app, or connect with the app's credentials from the project's Databases page.