2017-06-22 77 views
1

我试图用Mongoose中的对象ID引用填充用户信息的users数组。由于MissingSchemaError导致Mongoose.populate()未填充

这里是我的user.js型号:

var mongoose = require('mongoose'); 

var User = mongoose.Schema({ 
    conversations: [ 
     { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: 'Conversations' 
     } 
    ], 
    messages: [ 
     { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: 'Messages' 
     } 
    ] 
}); 

var User = module.exports = mongoose.model('Users', User); 

module.exports.getUserByUsername = function(username, callback) { 
    var query = {username: username}; 
    User.findOne(query, callback); 
} 

module.exports.getUserById = function(id, callback) { 
    User.findById(id, callback); 
} 

而且我conversation.js型号:

var mongoose = require('mongoose'); 

var Conversation = mongoose.Schema({ 
    created_at: Date, 
    created_by_user_id: String, 
    sent_to_user_id: String, 
    messages: [ 
     { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: 'Messages' 
     } 
    ], 
    users: [ 
     { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: 'User' 
     } 
    ] 

}); 

var Conversation = module.exports = mongoose.model('Conversations', Conversation); 

我使用他们在我users.js路线,像这样:

var User = require('../models/user') 
var Conversation = require('../models/conversation') 

router.get('/member', ensureAuthenticated, function(req, res, next) { 
    Conversation.find({ users: req.user._id }).populate('users').exec((err, conversations) => { 
    // Code 
    }) 
}) 

.populate('users')是不执行。我得到这个错误:MissingSchemaError: Schema hasn't been registered for model "User".任何想法?

回答

2

您在user.js中输出的型号名称为Users,您正试图在conversation.js中使用User来引用它,这就是为什么它会给出错误。将User改为Users,它应该可以工作

+1

伙计,我爱你。我一直在为这件事感触太久。太感谢了! – Farid