Menu
CoddyTech

Conexión a MongoDB

Parte de la sección Bases de datos con MongoDB del Journey de Node.js de Coddy. Lección 1 de 18.

Un arreglo en un servidor se pierde cada vez que el servidor se detiene. Una base de datos conserva los datos. MongoDB es un servidor de bases de datos que almacena documentos: objetos similares a JSON. Los documentos están en colecciones, y las colecciones están en una base de datos.

import { MongoClient } from 'mongodb';

const client = new MongoClient('mongodb://localhost:27017');
const movies = client.db('cinema').collection('movies');

await movies.insertOne({ title: 'Alien', year: 1979 });
const all = await movies.find().toArray();

El cliente se comunica con el servidor de bases de datos en esa dirección. insertOne almacena un documento. find() devuelve un cursor, un objeto que lee los resultados solo cuando se le solicita, y toArray() los lee todos en un arreglo. Cada llamada va a la base de datos, así que cada una necesita await.

Aquí, Run inicia una instancia vacía de MongoDB en memoria y la pestaña Data muestra sus colecciones. El código inicial agrega tres libros con insertMany, que recibe un arreglo de documentos.

challenge icon

Desafío

Fácil
  • Añade GET /books: devuelve todos los documentos de la colección books como una matriz JSON.

Pulsa Run y abre la pestaña Data para ver los tres libros. Después, envía GET /books.

Pruébalo tú mismo

import express from 'express';
import { MongoClient } from 'mongodb';

const client = new MongoClient('mongodb://localhost:27017');
const db = client.db('shelf');
const books = db.collection('books');

await books.insertMany([
    { title: 'Dune', author: 'Frank Herbert', year: 1965, isbn: '9780441013593', genre: 'scifi' },
    { title: 'Kindred', author: 'Octavia E. Butler', year: 1979, isbn: '9780807083697', genre: 'scifi' },
    { title: 'Emma', author: 'Jane Austen', year: 1815, isbn: '9780141439587', genre: 'classic' },
]);

const app = express();
app.use(express.json());

// Cada error devuelve { error: message }.
function sendError(res, status, message) {
    res.status(status).json({ error: message });
}

app.get('/', (req, res) => {
    res.send('Bookshelf API');
});

// Añade GET /books aquí.

app.listen(3000, () => {
    console.log('Bookshelf is running on port 3000');
});
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Bases de datos con MongoDB