no puedo obtener datos de la base de datos después de que se haya declarado un esquema múltiple (mongoose + expreso + mongodb

Soy nuevo en node.js y tengo problemas para acceder al cuando se declararon múltiples esquemas de mongoose.

//schema.js en el modelo

var mongoose = require('mongoose'); var Schema = mongoose.Schema , ObjectId = Schema.ObjectId; //User Schema var userSchema = new Schema({ id: ObjectId, firstname: {type: String, require: true}, lastname: {type: String, require: true}, username: {type: String, unique: true, require: true}, password: {type: String, require: true}, role: {type: [String], require: true} }) var User = mongoose.model('User', userSchema); module.exports = User; //Question Schema var qnSchema = new Schema({ id: ObjectId, question: {type: String, require: true}, module_id: {type: ObjectId, ref: 'Module'} }) var Question = mongoose.model('Question', qnSchema); module.exports = Question; //Answer Schema var ansSchema = new Schema({ id: ObjectId, answer: String, question: {type: ObjectId, ref: 'Question'} }) var Answer = mongoose.model('Answer', ansSchema); module.exports = Answer; //Module Schema var modSchema = new Schema({ id: ObjectId, name: {type: String, require: true} }) var Module = mongoose.model('Module', modSchema); module.exports = Module; //Role Schema var roleSchema = new Schema({ id: ObjectId, role: {type: String, require: true} }) var Role = mongoose.model('Role', roleSchema); module.exports = Role; 

//index.js en el controlador

 var mongoose = require('mongoose'); var User = require('../models/schema'); var db = mongoose.connect('mongodb://localhost/damai'); module.exports = function(app) { app.get('/', function(req, res) { if (typeof req.session.userid == 'undefined') { res.render('login', { title: app.get('title') }); } else { res.render('index', { title: app.get('title') }); } }); app.post('/login', function(req, res) { passwordVerification(req, res); }); } function passwordVerification(req, res) { var userid = req.param('userid'); var password = req.param('password'); User.findOne({'username': userid},{'password': 1}, function(err, cb) { console.log(cb); if(cb!= null) { if (password == cb.password) { req.session.userid = userid; res.render('index', { title: app.get('title'), 'userid': userid }); } else { res.render('login', { title: app.get('title'), error: 'Invalid login'}); } } else { res.render('login', { title: app.get('title'), error: 'Invalid login'}); } }); } 

Cuando solo tengo el “Esquema de usuario” en mi schema.js, la llamada a la base de datos del método “PasswordVerification ()” de index.js me devolverá la contraseña relevante que se recuperó de la base de datos. Sin embargo, cuando comienzo a agregar otro esquema como “Esquema de pregunta” en schema.js, el método “PasswordVerification ()” siempre devolverá el valor nulo.

Al exportar varios modelos desde un solo archivo, como lo está en schema.js, debe dar a cada modelo exportado su propio nombre de campo de exports .

Por ejemplo, reemplace las múltiples líneas module.exports = ... en schema.js con este código al final del archivo que exporta todos los modelos:

 module.exports = { User: User, Question: Question, Answer: Answer, Module: Module, Role: Role }; 

Y luego en index.js puedes acceder a los modelos así:

 var models = require('./schema'); ... models.User.findOne(... 
    Intereting Posts