Llevar una aplicación de Mongoose a TeselaDB

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:

Shell
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:

JavaScript
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:

1

Despué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

JavaScript
db.getSiblingDB("shop").orders.deleteMany({ customer: "Ana" });

Ejecútala en mongosh para borrar los pedidos de prueba, todos con Ana como cliente.

Siguientes pasos