Tu primera experiencia con Node.js

1

驴D贸nde aprender backend con Node.js actualizado?

2

Todo lo que aprender谩s sobre backend con Node.js

3

驴Qu茅 es Node.js?

4

驴Qu茅 es Node.js y para qu茅 sirve?

5

Diferencias entre Node.js y JavaScript

6

Resumen: Diferencias Nodejs y Javascript

7

Instalaci贸n de Node.js

8

Arquitectura orientada a eventos

9

Node.js para la web

Manejo y uso de Streams con Node.js

10

Introducci贸n a streams

11

Readable y Writable streams

12

Duplex y Transforms streams

Uso de utilidades de Node.js

13

Sistema operativo y sistema de archivos

14

Administrar directorios y archivos

15

Consola, utilidades y debugging

16

Clusters y procesos hijos

Crea tu primer proyecto en Express.js

17

驴Qu茅 es Express.js y para qu茅 sirve?

18

Creando tu primer servidor con Express.js

19

Request y Response Objects

Aprende a crear un API con REST

20

Anatom铆a de una API Restful

21

Estructura de una pel铆cula con Moockaru

22

Implementando un CRUD en Express.js

23

M茅todos idempotentes del CRUD

24

Implementando una capa de servicios

C贸mo conectarse con librer铆as externas en Express.js

25

Creaci贸n de una BD en MongoAtlas

26

Conexi贸n a MongoAtlas una instancia de MongoDB

27

Conexi贸n con Robot3T y MongoDB Compass a una BD

28

Implementaci贸n de las acciones de MongoDB

29

Conexi贸n de nuestros servicios con MongoDB

Conoce como funcionan los Middleware en Express.js

30

驴Qu茅 es un middleware? Capa de manejo de errores usando un middleware

31

Manejo de errores as铆ncronos y s铆ncronos en Express

32

Capa de validaci贸n de datos usando un middleware

33

驴Qu茅 es Joi y Boom?

34

Implementando Boom

35

Implementando Joi

36

Probar la validaci贸n de nuestros endpoints

37

Middlewares populares en Express.js

Implementa tests en Node.js

38

Creaci贸n de tests para nuestros endpoints

39

Creaci贸n de tests para nuestros servicios

40

Creaci贸n de tests para nuestras utilidades

41

Agregando un comando para coverage

42

Debugging e inspect

Despliega tu primera aplicaci贸n en Express.js

43

Considerando las mejores pr谩cticas para el despliegue

44

Variables de entorno, CORS y HTTPS

45

驴C贸mo implementar una capa de manejo de cach茅?

46

驴C贸mo contener tu aplicaci贸n en Docker?

47

Despliegue en Now

Conclusiones

48

驴Qu茅 aprendiste en este curso?

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Administrar directorios y archivos

14/48
Recursos

Aportes 29

Preguntas 6

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Que mundo enorme es NodeJS. La verdad me encanta pero habra que practicar practicar, leer y leer-

Un ejemplo de lo que comenta Guillermo al final de la clase, sobre pasar los archivos por parametro.

Pasados los vectores como parametros en el comando de ejecucion:

const fs = require('fs');

const arg1= process.argv[2];

const arg2= process.argv[3];

fs.copyFile(arg1, arg2, error => {
    if (error) {
        console.log(error);
    }
    console.log(`${arg1} fue copiado como ${arg2}`);
})

Si no les funciona el mkdir con m煤ltiples subcarpetas, aseg煤rense de tener una versi贸n de NodeJS actualizada.

Asi quedar铆a usando process.argv

Para borrar archivos pueden usar el metodo 鈥榰nlink鈥 de fs pasandole como primer parametro el archivo que desean borrar y como segundo parametro un callback

Con la funci贸n process.argv[]

este cursoest谩 mucho mejor estructurado que el de fundamentos de node con Carlos Hern谩ndez.
Va directo al grano con las funciones sin meterle paja.
El otro me consto trabajo terminarlo porque estaba muy malo, ojala lo dise帽ara de nuevo

Para convertir a promesas:

const fs = require('fs/promises');

(async function () {
  try {
    const files = await fs.readdir(__dirname);
    console.log(files);
  } catch (err) {
    console.error(err);
  }

  try {
    await fs.mkdir('platzi/escuela-js/node', { recursive: true });
  } catch (err) {
    console.error(err);
  }

  try {
    await fs.copyFile('naranja.txt', 'limon.txt');
    console.log('naranja.txt fue copiado como limon.txt');
  } catch (err) {
    console.error(err);
  }
})();

馃槂

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Probando el mismo codigo c贸digo pero con parametros, (nombre del archivo a copiar y nombre del archivo copiado):

const fs = require('fs');

const nameFile = process.argv[2];
const nameCopiedFile = process.argv[3];

fs.copyFile(nameFile, nameCopiedFile, error => {
    if (error)
        console.log(error);

    console.log(`${nameFile} copiado como ${nameCopiedFile}`);
}) 
node copy.js [nombre_archivo] [nombre_archivo_copiado]

Aqu铆 un gist

Otra forma de hacerlo:

const fs = require('fs');

fs.copyFile(`${__dirname}/suena.txt`, `${__dirname}/limon.txt`, (err) => {

  if (err) {
    return console.log(err);
  }

  return console.log('arhivo fue copiado');
});
<const fs = require("fs");

 const file = process.argv[2];

 if (!file) {
     throw new Error('Debes indicar el archivo que quieres leer');
 }

  const content = fs.readFile(file, function(err, content){
    if (err) {
        return console.log(err);
    }

  const lines = content.toString().split("\n").length;
  console.log(lines);
});de> 

Resolviendo el ejericio pasando parametros:
Asincrona

const fs = require("fs");

const copy = process.argv[2];
const to = process.argv[3];

fs.copyFile(copy, to, (err) => {
  if (err) {
    console.log("hubo un error", err);
  }

  console.log(`Tu archivo ${copy} fue copiado como ${to}`);
});

Sincrona

const fs = require("fs");
try {
  const copy = process.argv[2];
  const to = process.argv[3];
  fs.copyFileSync(copy, to);

  console.log(`Tu archivo ${copy} se copio con exito como ${to}`);
} catch (err) {
  console.log("Ocurrio el siguiente error:", err.message);
}

Les dejo el primer c贸digo usando async await:

const fs = require('fs').promises;

const printFiles = async (files) => {
  console.log(await files);
};

printFiles(fs.readdir(__dirname));

C贸digo de la clase

  • readdir.js
const fs = require('fs')

const files = fs.readdir(__dirname, (err, files) => {
    if (err) {
        return console.error(err)
    }

    console.log(files)
})
  • mkdir.js
const fs = require('fs')

fs.mkdir('carpeta-no-recursiva', err => (err) ? console.error(err) : '')
fs.mkdir('nueva-carpeta/otra-carpeta', { recursive: true }, err => (err) ? console.error(err) : '')
  • copy.js
const fs = require('fs')

fs.copyFile('naranja.txt', 'limon.txt', err => (err) ? console.error(err) : console.log('Naranja.txt fue copiado como limon.txt'))

Mega genial!! me encanta!!

Con arrow function quedar铆a asi:

fs.copyFile('naranja.txt', 'limon.txt', err => console.log(err))

Recomendar铆a mejor usar archivos bash para hacer esto, igual es bueno saber que nodejs puede hacerlo.

una clase importante para crear directorios y copiar archivos con fechas y nombres espec铆ficos. (como lo hace wordpress cuando publicas una imagen)

MkDir script

const fs=require("fs")


const file=fs.copyFile(process.argv[2],process.argv[3],(error,files)=>{
    if(error){
        return console.error(error)
    }
    console.log("archivo copiado")
})```

Mucho por practicar

xd

aqui les dejo un peque帽o cli, para listar archivos, crear carpetas y copiar un archivo,

esta armado el esqueleto, y falta completar las funciones crear carpeta y copiar archivo.

const fs = require("fs");

/**
 * LIST THE FOLDER AND FILES OF A DIRECTORY
 */
const listFolder = (dir = __dirname) => {
  fs.readdir(dir, (err, files) => {
    if (err) {
      return console.log(err);
    }
    console.log(files.join(", "));
  });
};

/**
 * CREATES A FOLDER BY DEFAULT ON THE CURRENT DIR
 * AND WITH RECURSIVE OPTION (DON'T CREATE ANIDATE FOLDER) IN FALSE
 */
const createFolder = (dir = __dirname, recursive = false) => {
  fs.mkdir(dir, { recursive }, (err) => {
    if (err) {
      return console.log(err);
    }
  });
};

/**
 * CREATE A COPY OF A FILE FROM 
 * ORIGIN TO DESTINATION
 */
const copyFile = (origin, destination) => {
  fs.copyFile(origin, destination, (err) => {
    if (err) {
      console.log(err);
    }

    console.log("naranja.txt fue copiado como limon.txt");
  });
};

/** 
 * SWITCHES TO THE CHOICED FUNCTION
 * **/
const main = (option, or, dest) => {
  console.log("****** MAIN MENU ******");
  console.log("");

  switch (option) {
    case "ls":
      listFolder(or);
      break;

    default:
      help();
      break;
  }
};

/**
 * PRINTS AVAILABLE OPTIONS
 */
const help = () => {
  console.log(`
HELP:
  ls [dir]: list files of a directory by default the current directory
  mkdir:    create directory
  cp:       copy a file
`);
};

/******* MAIN SECTION *********/

const [frst, second, option, origin, destination] = process.argv;
const available = ["ls", "mkdir", "cp"];


if (!option || !available.includes(option)) help();
else main(option, origin, destination);

este curso esta super genial.

Mucho por practicar!

const fs = require("fs");
const fileSource = process.argv[2];
const fileDestination = process.argv[3];

if (!fileSource) throw new Error("File Source Required");
if (!fileDestination) throw new Error("File Destination Required");

fs.copyFile(fileSource, fileDestination, (err) => {
  if (err) {
    console.log(err);
  }
  console.log(`File ${fileSource} has been copied as ${fileDestination}`);
});```