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!
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.