Database

Database & Persistance

Colyseus is agnostic to the database you use. You can use your preferred database and Node module for working with databases.

⚠️

We’re experimenting with our own recommended tool built on top of Kysely. If you’re interested in helping/contributing, please join the discussion and let us know!


Query builders

Query builders are known for their simplicity and flexibility.

ORMs (Object-Relational Mappers)

ORMs are known for abstracting the database layer and providing a more object-oriented approach.


Common Usage Patterns

Query the database on onAuth method

You may fetch user data based on the options passed to the client on connection, or based on the authentication token.

src/rooms/MyRoom.ts
// ...
async onAuth(client, options) {
    const user = await db.query('SELECT * FROM users WHERE id = ?', [options.userId]);
    return user;
}
 
onJoin (client, options) {
    // ...
    await db.query('UPDATE users SET online = true WHERE id = ?', [client.auth.id]);
}

Update the database on onLeave method

You may update the database when the client leaves the room.

src/rooms/MyRoom.ts
// ...
async onLeave(client, consented) {
    // ...
    await db.query('UPDATE users SET online = false WHERE id = ?', [client.auth.id]);
}
Last updated on