Olá, estou desenvolvendo um diário para professores e estou usando o MEAN, cada professor tem sua classe respectiva. Gostaria de saber como faço para por esse filtro na hora de recuperar a lista com alunos que correspondem a classe do professor!
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá, estou desenvolvendo um diário para professores e estou usando o MEAN, cada professor tem sua classe respectiva. Gostaria de saber como faço para por esse filtro na hora de recuperar a lista com alunos que correspondem a classe do professor!
Oi Francisco, talvez você tenha vindo do banco de dados relacional. Nesse tipo de banco, gravamos o professor em uma lista e os alunos em outra e fazemos um join.
No caso do MongoDB, um banco orientado a documento, você grava os alunos com o professor e quando obter o alunos, sem precisar fazer nada, eles já vem com o professor.
Veja que nesse caso há uma desnormalização dos dados em prol da performance. Se esse cenário é estranho para você, provavelmente a MEAN Stack não é a melhor solução para o seu problema ou talvez mudar o MongoDB para um banco relacional resolva.
Há cursos de Node.js na Alura que tratam o MYSQL com Node.js.
Talvez, para elucidar ainda mais essa questão, dê uma conferida no curso de MongoDB da Alura. Ele pode tocar nesses aspectos polêmicos de um banco orientado a documento.
(duplicado)
Como você criou os esquemas? Cole o código dos esquemas do mongoose aqui. É com base nesse código que podemos dar um auxílio na consulta. Se você ainda não tem o modelo, complica, porque o design dele é algo que só você pode definir.
Aguardamos o código dos esquemas criados.
Então eu já criei os esquema dos alunos
var mongoose = require('mongoose');
var schema = mongoose.Schema({
nome: {
type: String,
required: true
},
sexo: {
type: String,
required: true
},
classe: {
type: String,
required: true
}
});
mongoose.model('Aluno', schema);
E já criei o esquema dos usuários que no caso são os professores que irão realizar o login no sistema
var mongoose = require('mongoose');
var schema = mongoose.Schema({
login: {
type: String,
required: true
},
senha: {
type: String,
required: true
},
classe: {
type: String,
required: true
}
});
mongoose.model('Usuario', schema);
depois conforme a necessidade irei adicionar mais propriedade aos esquemas.
Não sei se nesse caso a propriedade classe no esquema Usuario seria tão necessário.
Hum...do jeito que esta você não conseguirá fazer a consulta sem gambiarras.
Que tal criar o esquema Classe que possui uma lista de Aluno e um professor? Faz sentido para você?
Dai você pesquisa a classe usando como criterio um professor.
A parte de modelagem de dados é uma ciência. Não da para tirar todas as dúvidas, mas essa alteração que propus é um caminho que permite resolver o problema da sua query.