Instalación MongoDB y más
https://www.mongodb.com/try/download/community
1º Pauetes node
npm install
2º evantar BD
mongod
Ó
sudo mongod
3º Compilador TS(modo observador)
tsc -w
4º Ejecutar nodemon
nodemon dist/
1º el modelo, 2º routes y 3º index
https://geekflare.com/es/mongodb-queries-examples/
https://www.youtube.com/watch?v=LibtQECAR1U&ab_channel=FacultadAutodidacta
C:\Program Files\MongoDB\Server\6.0\bin
mongod
https://robomongo.org/
- Abrir lo 'Studio 3T'
Crear a new connection:
✔Manuelly configure my connection setting + next
✔Rellenar con nombre de la bd, server(localhost)y port(27017)
- Abro terminal en el proyecto y tiro el comando:
npm init
- Le damos a enter hasta yes package name: (backendfotogramserve) version: (1.0.0) description: entry point: (index.js) test command: git repository: (https://github.com/CinTutuDev/BackendFotogram.git) keywords: author: license: (ISC) About to write to D:\ionic\BackendFotogramServe\package.json: Is this OK? (yes) y
- con esto creo el package.json
- Creo un index.ts
- Paso a terminal y si no tengo instalado control de versiones de TypeScrip
npm install -g typescript
tsc -v
- Escribo a continuaciòn en el terminal:
tsc index.js
- Y se crera el .js
- Para ver el console.log('Hola Mundo');
node index.js
- Crear archivo compilaer de Ts
tsc --init
- Abromos el : tsconfig.json Y ponemos/descomentamos si no está "outDir": "dist/",
- Poner modo observador
tsc -w
npm install -g nodemon
- Dentro del proyecto :
nodemon dist
- Una a una:
npm install express<br>
npm install body-parser<br>
npm install cors<br>
npm install mongoose<br>
npm install express-fileupload<br>
npm install jsonwebtoken<br>
npm install bcrypt<br>
- Ó de una vez
npm install express body-parser cors mongoose express-fileupload jsonwebtoken bcrypt
- En un terminal
tsc -w
- Y en otro
nodemon dist/
npm install @types/express --save-dev
- 1º Creo carpeta de routes y archivo usuarios.ts
- 2º Realizo petición:
import { Router, Request, Response } from "express";
const userRouter = Router();
/* hacer petición(GET, PUT, POSt....) */
userRouter.get("/prueba", (rep: Request, res: Response) => {
res.json({
ok: true,
mensaje: "Tu petición ha salido bien!!!",
});
});
export default userRouter;
- 3º Creo mi primera ruta en el index.ts
server.app.use("/user", userRouter);
- 4º Hago petición de prueba en Postman:
http://localhost:3000/user/prueba
- En index.ts
//Conectar BD
mongoose.connect('mongodb://127.0.0.1:27017/fotosgram');
- En usuarios.ts
//Ruta que voy a llamar para insertar BD
userRouter.post("/create", (req: Request, res: Response) => {
//req es la respuesta al posteo y el body es del bodyParse
const user = {
nombre: req.body.nombre,
email: req.body.email,
password: req.body.password,
};
res.json({
ok: true,
user
});
});
- En Postman hago la prueba:
1º usuarios.ts
userRouter.post("/create", (req: Request, res: Response) => {
//req es la respuesta al posteo y el body es del bodyParse
//Info basic para inserción en mi bd
const user = {
nombre: req.body.nombre,
email: req.body.email,
password: req.body.password,
};
//Para GRABAR en BD
// 1ºLlamo a mi modelo de usuario del userModel.ts:
//luego lo pruebo en Postman
UserModel.create(user).then((userDB) => {
res.json({
ok: true,
user: userDB,
});
});
});
2º Probar en Postman y debe salir una cosa similar a esto:
- Ir a usuario.ts e importar e instalar:
//Encriptado de contraseña
//instalar:
// npm install @types/bcrypt --save-dev
import bcrypt from 'bcrypt';
- Vamos a la funcion de crear y ponemos en el password:
userRouter.post("/create", (req: Request, res: Response) => {
//req es la respuesta al posteo y el body es del bodyParse
//Info basic para inserción en mi bd
const user = {
nombre: req.body.nombre,
email: req.body.email,
//le ponemos la cantidad de vueltas
password: bcrypt.hashSync(req.body.password, 10),
avatar: req.body.avatar,
};
- Se encuentra
class\token.ts
- importar
import jwt from "jsonwebtoken";
- Instalar
npm i --save-dev @types/jsonwebtoken --save-dev
- Creo carpeta t ts middlewares\autentication.ts
- La funcion sería:
export const verificaToken = (req: any, res: Response, next: NextFunction) => {
const userToken = req.get("x-token") || "";
Token.comprobarToken(userToken)
.then((decoded: any) => {
console.log("Decoded", decoded);
req.usuario = decoded.usuario;
next();
})
.catch((err) => {
res.json({
ok: false,
mensaje: "Token no es correcto 👽",
});
});
};
- Lo que hace es verificar antes de entrar en cualquier llamada y se puede user tanto para crear, borrar, grabar...
- Su sintaxis ej:
userRoutes.post("/update", verificaToken, (req: any, res: Response) => {
//Antes necesito verificar que el Token sea valido --> middlewares\autentication.ts
//middlewares --> se ejecuta antes de la ruta ... esta
res.json({
ok: true,
usuario: req.usuario,
});
});
- Vamos a index.ts en importamos:
import fileUpload from 'express-fileUpload';
- Instalamos
npm i @types/express-fileupload --save-dev
npm i uniqid
npm i --save-dev @types/uniqid
- Importamos en BackendFotogramServe\class\fileSystem.ts
import uniqid from 'uniqid';
const idUnic = uniqid();
GET localhost:3000/posts/imagen/64070881d1a2a2a26552246e/19j9awkrkley2myyy.png