-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathanotacoes.txt
165 lines (106 loc) · 5.82 KB
/
anotacoes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
CONFIGURAÇÃO DO PROJETO
1 - yarn add express
2 - yarn add typescript -D
3 - yarn tsc --init
4 - yarn add @types/express -D
4 - Agora, criar pasta src e criar arquivo server.ts
5 - No arquivo tsconfig.json, fazer da seguinte forma:
"rootDir": "./src",
"outDir": "./dist", --diretório que gera o build do projeto em javascript
6 - yarn tsc // assim gerará o arquivo de build
7 - Importar o express no arquivo server.ts
Observação: sempre que dar problemas de tipos na importação de módulos, usar "yarn add @types/MODULO -D"
8 - Para nao ter que ficar sempre dando yarn tsc, remova a pasta dist, e no arquivo package.json coloque dentro de scripts: "build": "tsc", e instale o pacote:
yarn add ts-node-dev -D // executa em modo de desenvolvimento a parte de TS
9 - No mesmo arquivo do package.json, adicionar em baixo do build: "dev:server": ""dev:server": "ts-node-dev --transpile-only --ignore node_modules src/server.ts"
// transpile-only (na conversão de desenvolvimento, desativa se o código está correto, se os tipos estão batendo, etc.) -- ignora os modulos
Para executar o projeto AGORA: yarn dev:server
Instalar o plugin Editorconfig, clicar com o botão direito e Generate .editconfig, conforme abaixo, para assim, padrozinar o código fonte do projeto
end_of_line = lf
indent_style = space
indent_size = 4
end_of_line = crlf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
Configurar o ESLINT é importante também
- yarn add eslint -D
- yarn eslint --init
- 3 opção, forçar
- 1 opção, Javascript modules, devido ao Typescript
- None of theses (se for backend)
- Sim se o projeto usa Typescript
- Espaço e seleciona o Node
- Usar um projeto: Standard (nao usa o ponto virgula) / Airbnb (usa ponto e virgula no final mas usa aspas simples)
- Formato Json
- Se usar Yarn (usar não) , se NPM sim
Copiar código exemplo (remover eslint já instalado): yarn add -D @typescript-eslint/eslint-plugin@latest eslint-config-airbnb-base@latest @typescript-eslint/parser@latest
Instalar o prettier
- yarn add prettier eslint-config-prettier eslint-plugin-prettier -D
--------
3 tipos de Abstração em banco de dados:
- Lidar com o driver nativo
- Lidar com o query builder (knex.js)
- Lidar com o ORM
Object Relational Mapping (ORM): mapear registros da tabela do banco de dados, com objetos no Javascript. Ou seja, criamos models no projeto, sempre que criar, excluir, editar, sofre alterações no banco de dados.
Conhecidos:
Sequelize para javascript
TypeORM: Utilizado para Typescript
--------
Docker: ajuda a controlar serviços externos que não seja o código do aplicação
- Criação de ambientes isolados(container) - como banco de dados, serviços externos
- Fica armazenado em um subsistema do computador, não mexendo nos arquivos do sistema operacional ou códigos
- Containers expõe portas para comunicação
Principais conceitos do Docker
- imagem: serviço, ferramentas, tecnolognias disponível do docker que podem ser colocados em Containers
- containers: instância de uma imagem
- Docker Registry (Docker hub): onde fica as imagens do docker
-- Docker file: receita para ser criado uma própria imagem, isto é, como é a receita pro nosso código funcionar em um ambiente/servidor do 0
- Como criar um container docker do Postgres: docker run --name postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres
- Ver ID do docker: docker ps
- Iniciar docker: docker start ID/nome
- Parar docker: docker stop ID/nome
_____________
Criar arquivo ormconfig.json e:
- Instalar typeorm e drive do postgres: yarn add typeorm pg
- Depois, criar uma pasta database em src, arquivo index.ts, importar o createConnection do typeorm e importar a database no arquivo server.ts
Migrations: controlam alterações no banco de dados, arquivo de instruções que queremos fazer no banco de dados,
Criar uma pasta migrations dentro de database, lembrar de no arquivo ormconfig.json, criar a pasta de migrations
Arquivo pra criar de uma tabela: yarn typeorm migration:create -n CreateAppointments
Depois executar: yarn typeorm migration:run
// pra criar as parada no banco
Só é possível alterar uma migration, se ela não foi enviado antes pro controle de versão, caso contrário precisa criar uma nova migration
yarn typeorm migration:revert
yarn typeorm migration:show
"experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
"emitDecoratorMetadata": true,
"strictPropertyInitialization": false,
Podemos usar decorators no typescript, usando @,
-- Criando uma nova migration: yarn typeorm migration:create -n CreateUsers
-- Vai na migrations e cria as tabelas
-- Pra executar: yarn typeorm migration:run
-- Criar model
-- Criar service
Pra criptografia de senha: yarn add bcryptjs
Pro Typescript: yarn add -D @types/bcryptjs
JWT -> busca no banco os acessos, se achar, gerar um token JWT, o token é separado por
pontos.
- Headers,
- Payload, dados adicionais
- Assinatura
Instalar pacote JWT: yarn add jsonwebtoken
middlware de autenticação: evita que usuários não autenticados acessem determinadas rotas
o token vai pelo cabeçalho da requisição
middlware é uma função que recebe um request, response e chama o next,
ou seja, caso o usuário esteja validado, chama o next, pra que aplicação siga para o restante das rotas,
se der erro, ou não chamar a função, next, o sistema para nessa função
_____________
yarn add multer - middlware de Upload de arquivo para o express
yarn add -D @types/multer
_________
Exception Handling
Lidar com exceções, ou seja, lidar com erros na aplicação
Global Exception Handler: middlware que capta todos os erros da aplicação,
independente da onde veio (arquivo original), todos os erros vao cair num ponto central
e a gente pode manipular eles
Pacote para tratar de erros: yarn add express-async-errors