Invierte en tu educación con el precio especial

Antes:$249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12d

15h

38m

33s

1

CRUD Zenless Zone Zero API

Este es un proyecto que he estado empezando y que quiero completar como Fullstack. Hay un juego que se llama Zenless Zone Zero que sale el 6 de julio. Y como apenas está empezando quiero hacer una API.
Imagen zenless zone zero

Estoy utilizando Vscode y Postman

1. Ver que realmente funciona

Primero empezamos con instalar express, además que yo agregue el port por si las dudas porque luego otros port son usados por Windows u otros programas. Luego agregamos app.get(...) para que podamos usar el server de express.

import express from'express';
import bodyParser from'body-parser';
const app = express();
const PORT = 5120;

app.use(bodyParser.json());

app.get('/', (req, res) => {
  res.send('Welcome to Zenless Zone Zero API');
});


Yipi, si funciona

2. Conectar a MongoDB y Instalar Moongose

Lo sé en el curso, nunca menciona como conectar o usar MongoDB, pero quise ver una manera para no tenerlo en local y, ya que estamos mejor uso una base de datos. Así que mi respuesta fue <ins>MONGODB</ins>. Pero la verdad es muy sencillo, les juro que es más complicado hacerte la cuenta y ver la interfaz.

Instalas moongose

npm i mongoose

Recuerda agregar tu cuenta y password de tu base de datos. No te preocupes el mismo MongoDB te lo da.

import mongoose from 'mongoose';
const MONGODBCONNECTION =
  'mongodb+srv://:@ejemplodb.pl0cjyv.mongodb.net/?retryWrites=true&w=majority&appName=ejemplodb';
mongoose
  .connect(MONGODBCONNECTION)
  .then(() => {
    console.log('Connected Database');
    app.listen(PORT, () => {
      console.log(`Server running on port http://localhost:${PORT}`);
    });
  })
  .catch(() => {
    console.log('Connection failed');
  });

Mi recomendación es que instales moongose técnicamente puedes hacerlo sin él, pero es un poco más laborioso, pero no queremos eso, al menos yo.

3. Agregar el modelo del personaje

Puede ser lo que sea pero, yo estoy usando personajes

Vas a crear un nuevo archivo

Esa nomenclatura es para saber que es un modelo de lo que estés usando. No tienes que nombrarlo así, pero es una buena práctica. Puedes llamarlo pudin.js si quieres.

import mongoose from 'mongoose';const CharacterSchema = mongoose.Schema({
  name: {
    type: String,
    required: [true, 'Please enter character name'],
  },
  model_type: {
    type: String,
    required: [true, 'Please enter model_type'],
  },
  rank: {
    type: String,
    required: [true, 'Please enter rank'],
  },
  attribute: {
    type: String,
    required: [true, 'Please enter attribute'],
  },
  style_primary: {
    type: String,
    required: [true, 'Please enter style_primary'],
  },
  style_secondary: {
    type: String,
    required: [true, 'Please enter style_secondary'],
  },
  faction: {
    type: String,
    required: [true, 'Please enter faction'],
  },
  skills: {
    type: String,
    required: [true, 'Please enter skills'],
  },
});

const Character = mongoose.model('Character', CharacterSchema);

exportdefault Character;

WOW ES MUCHO TEXTO. Sí, pero importamos moongose para usarlo.
Los Schema es la estructura que indica cuál es la forma en la que están estructurados los documentos que se almacenan en una colección de MongoDB.

4. Agregar el CRUD

Recuerda importar el schema en index.js

import Character from'./models/characters.model.js';

¡Pero Alan! Estás usando async await bueno querida persona. Sí, pero esto es porque quiero utilizar MongoDB como mi base de datos para aprender algo nuevo y no tenerlo en local.

Esto me permite que pueda hacer el request y aun así cargue la página por si no tiene información para que no pase un error.

Puedes agregar información

Utilizando postman pude agregar los datos a mi API

app.post('/characters', async (req, res) => {
  try {
    const character = await Character.create(req.body);
    res.status(200).json(character);
  } catch (err) {
    res.status(500).json({ message: err.message });
  }
});

Obtiene la información de MongoDB

Con esto puedes mostrar los datos que tengas o hayas agregado.

app.get('/characters', async (req, res) => {
  try {
    // res.send('Characters');const characters = await Character.find({});
    res.status(200).json(characters);
  } catch (err) {
    res.status(500).json({ message: err.message });
  }
});

En el update y delete podrás notar que tiene un ID, si recordamos lo que nos dijo el profesor. Es mala práctica y para nada recomendable poder eliminar/actualizar de golpe mucha información. Afortunadamente, MongoDBsolito te crea un id así que puedes buscarlo por ID y así haces lo que necesitas.

Actualizar la información

app.put('/characters/:id', async (req, res) => {
  try {
    const { id } = req.params;
    const character = await Character.findByIdAndUpdate(id, req.body);
    if (!character) {
      return res.status(404).json({ message: 'Character Not Found' });
    }

    const updateCharacter = await Character.findById(id);
    res.status(200).json(character);
  } catch (err) {
    res.status(500).json({ message: err.message });
  }
});

¡Oh no! Nos equivocamos y las skills de Billy Kid dice una tontería, vamos a cambiarlo con el update.

Ahora ya no dice la tontería que escribí y ahora tiene algo coherente.

Borrar la información

app.delete('/characters/:id', async (req, res) => {
  try {
    const { id } = req.params;
    const character = await Character.findByIdAndDelete(id, req.body);

    if (!character) {
      return res.status(404).json({ message: 'Character Not Found' });
    }

    res.status(200).json({ message: 'Character Deleted Successfully' });
  } catch (err) {
    res.status(500).json({ message: err.message });
  }
});

Creamos a un personaje que no existe o que no tiene mucha información, asi que lo vamos a borrar.

¡Agarramos el id del personaje e hicimos un request de delete para borrarlo

¡Ya no existe!

Esto fue uno de mis primeros tutoriales y la verdad me gusto hacer todo este proceso.

Escribe tu comentario
+ 2