Les bases de données sont exposées par le module api.databases — un ajout de la v4. Elles sont disponibles sur les plans Standard, Pro et Enterprise.
Créer une base de données
api.databases.create(options) provisionne une nouvelle base de données. Le password et le certificate ne sont renvoyés qu’à la création — conservez-les dès maintenant.
const created = await api.databases.create({
name: "my-mongo",
memory: 512,
type: "mongo",
version: "7.0",
});
console.log(created.id);
console.log(created.connection_url);
console.log(created.password); // shown once — store securely
console.log(created.certificate); // shown once — store securely
| Champ | Type | Description |
|---|
name | string | Nom d’affichage |
memory | number | Mémoire allouée en Mo |
type | string | Slug du moteur (ex. mongo, postgres, mysql) |
version | string | Version du moteur (ex. "7.0") |
Lister vos bases de données
api.user.get() remplit user.databases avec une Collection de toutes les bases de données que vous possédez :
const user = await api.user.get();
for (const [id, db] of user.databases) {
console.log(`${db.name} (${id}) — ${db.type} ${db.ram}MB`);
}
Récupérer une seule base de données
const db = await api.databases.fetch(created.id);
console.log(db.id);
console.log(db.name);
console.log(db.owner);
console.log(db.type);
console.log(db.ram);
console.log(db.cluster);
console.log(db.port);
console.log(db.createdAt);
Cycle de vie
await db.start();
await db.stop();
Statut et métriques
const status = await db.getStatus();
console.log(`${status.status} • CPU ${status.usage.cpu} • RAM ${status.usage.ram}`);
const metrics = await db.getMetrics();
console.log(`${metrics.length} metric points (up to 288 over 24h)`);
Statut résumé de chaque base de données
const all = await api.databases.statusAll();
for (const summary of all) {
console.log(`${summary.databaseId} → ${summary.running ? "running" : "stopped"}`);
// Promote to the full status with .fetch()
if (summary.running) {
const full = await summary.fetch();
console.log(full.usage);
}
}
Mettre à jour
db.update(options) modifie le nom d’affichage et/ou l’allocation de mémoire. Au moins un champ doit être fourni.
await db.update({ name: "primary-db", ram: 1024 });
Identifiants
db.credentials.certificate() renvoie le certificat TLS (PEM encodé en base64) :
const cert = await db.credentials.certificate();
console.log(`Certificate length: ${cert.length}`);
db.credentials.reset(type) effectue la rotation soit du mot de passe, soit du certificat.
// Rotate the password — the new value is shown only once
const { password } = await db.credentials.reset("password");
console.log(`New password: ${password}`);
// Rotate the certificate — fetch the new one via .certificate()
await db.credentials.reset("certificate");
const newCert = await db.credentials.certificate();
db.credentials.certificate() et db.credentials.reset() nécessitent que la base de données soit en cours d’exécution.
Snapshots
db.snapshots reflète l’API de snapshots des applications.
import { writeFile } from "node:fs/promises";
const snapshots = await db.snapshots.list();
console.log(`${snapshots.length} snapshots stored`);
const fresh = await db.snapshots.create();
console.log(`Download URL: ${fresh.url}`);
const buffer = await db.snapshots.download();
await writeFile("./db-backup.tar.gz", buffer);
await db.snapshots.restore(
"00000000-0000-4000-8000-000000000000_mongo",
"v1",
);
Contrairement à app.snapshots.restore({ snapshotId, versionId }), db.snapshots.restore(snapshotId, versionId) prend des arguments positionnels.
Supprimer une base de données
La suppression d’une base de données est irréversible. Assurez-vous d’avoir un snapshot récent si vous pourriez avoir besoin de récupérer les données.