You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/4/ptbr/part4c.md
+13-13Lines changed: 13 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,15 +21,15 @@ A solução existente salva cada nota na <i>coleção de notas</i> no banco de d
21
21
22
22
Como em todos os bancos de dados de documentos, podemos usar IDs de objeto no Mongo para fazer referência a documentos em outras coleções. Isso é semelhante ao uso de chaves estrangeiras em bancos de dados relacionais.
23
23
24
-
Tradicionalmente, os bancos de dados de documentos, como o Mongo, não oferecem suporte a <i>consultas de junção</i> que estão disponíveis em bancos de dados relacionais, usados para agregar dados de várias tabelas. No entanto, a partir da versão 3.2, o Mongo oferece suporte a [consultas de agregação de pesquisa](https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/). Não veremos essa funcionalidade neste curso.
24
+
Tradicionalmente, os bancos de dados de documentos, como o Mongo, não oferecem suporte a <i>join queries</i> que estão disponíveis em bancos de dados relacionais, usados para agregar dados de várias tabelas. No entanto, a partir da versão 3.2, o Mongo oferece suporte a [consultas de agregação de pesquisa](https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/). Não veremos essa funcionalidade neste curso.
25
25
26
26
Se precisarmos de funcionalidade semelhante a consultas de junção, iremos implementá-la em nosso aplicativo fazendo várias consultas. Em certas situações, o Mongoose pode cuidar da junção e agregação de dados, o que dá a aparência de uma consulta de junção. No entanto, mesmo nessas situações, o Mongoose faz várias consultas ao banco de dados em segundo plano.
27
27
28
28
### Referências entre coleções
29
29
30
-
Se estivéssemos usando um banco de dados relacional, a nota conteria uma <i>chave de referência</i> para o usuário que a criou. Em bancos de dados de documentos, podemos fazer a mesma coisa.
30
+
Se estivéssemos usando um banco de dados relacional, a nota conteria uma <i>chave estrangeira</i> para o usuário que a criou. Em bancos de dados de documentos, podemos fazer a mesma coisa.
31
31
32
-
Vamos supor que a coleção de <i>usuários</i> contém dois usuários:
32
+
Vamos supor que a coleção <i>users</i> contém dois usuários:
33
33
34
34
```js
35
35
[
@@ -44,7 +44,7 @@ Vamos supor que a coleção de <i>usuários</i> contém dois usuários:
44
44
]
45
45
```
46
46
47
-
A coleção <i>notas</i> contém três notas, que todas elas tem um campo de <i>usuário</i> que faz referência a um usuário na coleção de <i>usuários</i>:
47
+
A coleção <i>notes</i> contém três notas, todas elas com um campo <i>user</i> que faz referência a um usuário na coleção <i>users</i>:
48
48
49
49
```js
50
50
[
@@ -69,7 +69,7 @@ A coleção <i>notas</i> contém três notas, que todas elas tem um campo de <i>
69
69
]
70
70
```
71
71
72
-
Os bancos de dados de documentos não exigem que a chave estrangeira seja armazenada nos recursos de nota, ela <i>também</i> pode ser armazenada na coleção de usuários ou até mesmo em ambos:
72
+
Os bancos de dados de documentos não exigem que a chave estrangeira seja armazenada nos recursos de nota, ela <i>também</i> pode ser armazenada na coleção users ou até mesmo em ambos:
73
73
74
74
```js
75
75
[
@@ -88,7 +88,7 @@ Os bancos de dados de documentos não exigem que a chave estrangeira seja armaze
88
88
89
89
Como os usuários podem ter muitas notas, os IDs relacionados são armazenados em uma matriz no campo de <i>notas</i>.
90
90
91
-
Os bancos de dados de documentos também oferecem uma maneira radicalmente diferente de organizar os dados: em algumas situações, pode ser benéfico aninhar todo o array de notas como parte dos documentos na coleção de usuários:
91
+
Os bancos de dados de documentos também oferecem uma maneira radicalmente diferente de organizar os dados: em algumas situações, pode ser benéfico aninhar todo o array de notas como parte dos documentos na coleção users:
92
92
93
93
```js
94
94
[
@@ -128,7 +128,7 @@ Paradoxalmente, bancos de dados sem esquema como o Mongo exigem que os desenvolv
128
128
129
129
#### Esquema Mongoose para usuários
130
130
131
-
Neste caso, decidimos armazenar os ids das notas criadas pelo usuário no documento do usuário. Vamos definir o modelo para representar um usuário no arquivo <i>models/user.js</i>:
131
+
Neste caso, decidimos armazenar os ids das notas criadas pelo usuário no documento <i>user</i>. Vamos definir o modelo para representar um usuário no arquivo <i>models/user.js</i>:
132
132
133
133
```js
134
134
constmongoose=require('mongoose')
@@ -160,7 +160,7 @@ const User = mongoose.model('User', userSchema)
160
160
module.exports= User
161
161
```
162
162
163
-
Os ids das notas são armazenados no documento do usuário como uma matriz de ids do Mongo. A definição é a seguinte:
163
+
Os ids das notas são armazenados no documento <i>user</i> como uma matriz de ids do Mongo. A definição é a seguinte:
164
164
165
165
```js
166
166
{
@@ -169,7 +169,7 @@ Os ids das notas são armazenados no documento do usuário como uma matriz de id
169
169
}
170
170
```
171
171
172
-
O tipo do campo é <i>ObjectId</i> que faz referência a documentos de estilo de <i>nota</i>. O Mongo não sabe inerentemente que este é um campo que faz referência a notas, a sintaxe é puramente relacionada e definida pelo Mongoose.
172
+
O tipo do campo é <i>ObjectId</i> que faz referência a documentos de estilo <i>Note</i>. O Mongo não sabe inerentemente que este é um campo que faz referência a notas, a sintaxe é puramente relacionada e definida pelo Mongoose.
173
173
174
174
Vamos expandir o esquema da nota definida no arquivo <i>models/note.js</i> de modo que que a nota contenha informações sobre o usuário que a criou:
175
175
@@ -194,15 +194,15 @@ Em total contraste com as convenções dos bancos de dados relacionais, as <i>re
194
194
195
195
#### Criando usuários
196
196
197
-
Vamos implementar uma rota para criar novos usuários. Os usuários têm um <i>nome de usuário</i> exclusivo, um nome e algo chamado <i>passwordHash</i>. O hash da senha é a saída de uma [função hash unidirecional](https://en.wikipedia.org/wiki/Cryptographic_hash_function) aplicada à senha do usuário. Nunca é aconselhável armazenar senhas de texto simples não criptografadas no banco de dados!
197
+
Vamos implementar uma rota para criar novos usuários. Os usuários têm um <i>username</i> exclusivo, um <i>name</i> e algo chamado <i>passwordHash</i>. O hash da senha é a saída de uma [função hash unidirecional](https://en.wikipedia.org/wiki/Cryptographic_hash_function) aplicada à senha do usuário. Nunca é aconselhável armazenar senhas de texto simples não criptografadas no banco de dados!
198
198
199
199
Vamos instalar o pacote [bcrypt](https://github.com/kelektiv/node.bcrypt.js) para gerar os hashes de senha:
200
200
201
201
```bash
202
202
npm install bcrypt
203
203
```
204
204
205
-
A criação de novos usuários ocorre em conformidade com as convenções RESTful discutidas na [part 3](/ptbr/part3/node_js_and_express#rest), fazendo uma solicitação HTTP POST para o caminho do <i>usuário</i>.
205
+
A criação de novos usuários ocorre em conformidade com as convenções RESTful discutidas na [part 3](/ptbr/part3/node_js_and_express#rest), fazendo uma solicitação HTTP POST para o caminho <i>users</i>.
206
206
207
207
Vamos definir um <i>roteador</i> separado para lidar com usuários em um novo arquivo <i>controllers/users.js</i>. Vamos colocar o roteador em uso em nossa aplicação no arquivo <i>app.js</i>, para que ele trate as solicitações feitas à url <i>/api/users</i>:
208
208
@@ -416,7 +416,7 @@ A lista fica assim:
416
416
417
417

418
418
419
-
Você pode encontrar o código da nossa aplicação atual na íntegra na ramificação <i>part4-7</i> [deste repositório GitHub](https://github.com/fullstack-hy2020/part3-notes-backend/tree/part4-7).
419
+
Você pode encontrar o código da nossa aplicação atual na íntegra na branch <i>part4-7</i> [deste repositório GitHub](https://github.com/fullstack-hy2020/part3-notes-backend/tree/part4-7).
420
420
421
421
#### Criando uma nova nota
422
422
@@ -548,6 +548,6 @@ const noteSchema = new mongoose.Schema({
548
548
})
549
549
```
550
550
551
-
Você pode encontrar o código de nosso aplicativo atual na íntegra na ramificação <i>part4-8</i> [deste repositório GitHub](https://github.com/fullstack-hy2020/part3-notes-backend/tree/part4-8).
551
+
Você pode encontrar o código da nossa aplicação atual na íntegra na ramificação <i>part4-8</i> [deste repositório GitHub](https://github.com/fullstack-hy2020/part3-notes-backend/tree/part4-8).
0 commit comments