Llevar una aplicación de Mongoose a TeselaDB
TeselaDB
Equipo de TeselaDB
20 minPrincipiante
Conecta tus modelos de Mongoose a TeselaDB, comprueba que guardan y leen igual y revisa lo que cambia.
Mongoose habla con la base a través del driver oficial de MongoDB para Node.js, así que tus esquemas, tus validaciones y tus consultas siguen igual. Lo que cambia es la cadena de conexión y, en algún caso, un comportamiento de la lista de diferencias con MongoDB.
Lo que vas a construir
Un modelo de Mongoose con su esquema que guarda y lee pedidos en TeselaDB. Con él compruebas que tu aplicación funciona contra el clúster antes de cambiarla entera.
Requisitos
- Node.js 18 o posterior y Mongoose 8 o posterior.
- Un clúster de TeselaDB con sus datos ya migrados, si los tienes en MongoDB (Migrar desde MongoDB).
- La cadena de conexión con TLS en la variable de entorno
TESELADB_URI.
1. Cambia la cadena de conexión
Si tu aplicación ya lee la cadena de una variable de entorno, basta con darle la de TeselaDB:
export TESELADB_URI="mongodb://tienda-api:<contraseña>@node-01:27017,node-02:27017/shop?tls=true&tlsCAFile=./ca.pem"2. Prueba un modelo
Guarda esto como pedido.mjs, con un esquema que valida sus campos y marca las fechas de creación y de cambio:
import mongoose from "mongoose";
const Order = mongoose.model(
"Order",
new mongoose.Schema(
{ customer: { type: String, required: true }, total: { type: Number, min: 0 } },
{ timestamps: true },
),
);
await mongoose.connect(process.env.TESELADB_URI);
await Order.create({ customer: "Ana", total: 30 });
console.log(await Order.countDocuments({ customer: "Ana" }));
await mongoose.disconnect();Probarlo
Ejecuta node pedido.mjs. El programa se conecta con Mongoose usando la cadena de TESELADB_URI, crea un pedido de
Ana con un total de 30 y después cuenta sus pedidos, así que contra una base vacía escribe el número 1:
1Después pasa los tests de tu aplicación contra TeselaDB. Si alguno falla, mira primero si depende del orden de un
find sin sort, que en TeselaDB devuelve los documentos en el orden de su clave.
Limpiar
db.getSiblingDB("shop").orders.deleteMany({ customer: "Ana" });Ejecútala en mongosh para borrar los pedidos de prueba, todos con Ana como cliente.
Siguientes pasos
- ODM y ORM, con Spring Data MongoDB y Beanie.
- Diferencias con MongoDB, por si tu aplicación depende de alguna.