Estudando MongoDB me deparei com uma situacao a qual nao gostei, porem apos refletir um pouco eu cheguei a conclusao de que poderia ser um dos principais diferenciais de utilizar bases NoSQL no lugar de SQLs.
Quando eu crio uma relacao de schemas 1xn no exemplo
- 1 Autor pode ter N livros (hasMany)
- um livro pertence apenas a um autor (belongsTo)
Se eu lancar apenas um lado da verdade ao criar meus objetos:
//criar novo Livro
{
"autor": 12345678,
"titulo": "Hobbit",
...
}
Eu consigo obter o autor atraves do livro livro.autor.nome
Porem se eu instancio o autor numa variavel e tento acessar o array de livros, vai me retornar vazio pois na base NoSQL cada documento e independente
let autor = Autor.findById(12345678)
console.log(autor.livros)
// retorna []
Caso eu queira que essa relacao funcione em ambos lados, sou obrigado a declarar no documento do autor o array de livros que os pertence
// PUT autores/12345678
{
"books": ["55555555", "666666666"]
...
}
E entao quando eu quiser obter os relacionamentos eu consigo, acessando diretamente o documento sem precisar utilizar recursos do servidor em comparacao a uma base SQL
E assim que deveria ser o NoSQL? faz sentido o que estou dizendo? Alguem me poderia dar um norte a respeito do tema?