由于MissingSchemaError,Mongoose .populate()不能填充

我正在尝试使用Mongoose中的对象ID引用来填充users数组。

这是我的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". 有任何想法吗?

您在user.js中输出的模型名称是Users ,您正试图在conversation.js中将其与User.js一起引用,这就是为什么它会给出错误。 将Users更改为Users ,它应该工作