Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Filtro na busca

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!

6 respostas

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.

solução!

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.