Que mundo enorme es NodeJS. La verdad me encanta pero habra que practicar practicar, leer y leer-
Tu primera experiencia con Node.js
¿Dónde aprender backend con Node.js actualizado?
Todo lo que aprenderás sobre backend con Node.js
¿Qué es Node.js?
¿Qué es Node.js y para qué sirve?
Diferencias entre Node.js y JavaScript
Resumen: Diferencias Nodejs y Javascript
Instalación de Node.js
Arquitectura orientada a eventos
Node.js para la web
Manejo y uso de Streams con Node.js
Introducción a streams
Readable y Writable streams
Duplex y Transforms streams
Uso de utilidades de Node.js
Sistema operativo y sistema de archivos
Administrar directorios y archivos
Consola, utilidades y debugging
Clusters y procesos hijos
Crea tu primer proyecto en Express.js
¿Qué es Express.js y para qué sirve?
Creando tu primer servidor con Express.js
Request y Response Objects
Aprende a crear un API con REST
Anatomía de una API Restful
Estructura de una película con Moockaru
Implementando un CRUD en Express.js
Métodos idempotentes del CRUD
Implementando una capa de servicios
Cómo conectarse con librerías externas en Express.js
Creación de una BD en MongoAtlas
Conexión a MongoAtlas una instancia de MongoDB
Conexión con Robot3T y MongoDB Compass a una BD
Implementación de las acciones de MongoDB
Conexión de nuestros servicios con MongoDB
Conoce como funcionan los Middleware en Express.js
¿Qué es un middleware? Capa de manejo de errores usando un middleware
Manejo de errores asíncronos y síncronos en Express
Capa de validación de datos usando un middleware
¿Qué es Joi y Boom?
Implementando Boom
Implementando Joi
Probar la validación de nuestros endpoints
Middlewares populares en Express.js
Implementa tests en Node.js
Creación de tests para nuestros endpoints
Creación de tests para nuestros servicios
Creación de tests para nuestras utilidades
Agregando un comando para coverage
Debugging e inspect
Despliega tu primera aplicación en Express.js
Considerando las mejores prácticas para el despliegue
Variables de entorno, CORS y HTTPS
¿Cómo implementar una capa de manejo de caché?
¿Cómo contener tu aplicación en Docker?
Despliegue en Now
Conclusiones
¿Qué aprendiste en este curso?
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 29
Preguntas 6
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.
Repositorio de la clase:
https://github.com/glrodasz/platzi-backend-node/tree/administrar-directorios-y-archivos
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 ‘unlink’ 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]
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));
const fs = require('fs')
const files = fs.readdir(__dirname, (err, files) => {
if (err) {
return console.error(err)
}
console.log(files)
})
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) : '')
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}`);
});```
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?