【发布时间】:2018-10-27 08:11:12
【问题描述】:
我正在使用 mongoose 作为我的 MongoDB 数据库的 ORM 使用 express 构建一个应用程序。
我有 2 个模型位于不同的文件中:用户和帖子。
User.js 模型看起来像
var mongoose = require('mongoose'),
moment = require('moment'),
Schema = mongoose.Schema,
UserSchema = new Schema({
created_at: {type: Date, default: moment()),
name: String
});
module.exports = mongoose.model('user', UserSchema);
和 Posts.js 模型
var mongoose = require('mongoose'),
moment = require('moment'),
Schema = mongoose.Schema,
PostSchema = new Schema({
created_at: {type: Date, default: moment()},
user: {type: Schema.Type.ObjectId, ref: 'User'}
});
我在控制器中的单独文件中调用它们,看起来像
var Post = require('../models/User'),
User = require('../models/Posts');
Post.find().populate('user').exec();
这个人口返回给我一个 MissingSchema 错误,上面写着: MissingSchemaError:模型“帖子”的架构尚未注册。
与数据库的连接在主文件中:app.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1/database');
谁能告诉我我的代码有什么问题?
【问题讨论】:
-
var Post = require('../models/User'), User = require('../models/Posts');- 名称是错误的。您还使用小写的'user'向mongoose.model('user', UserSchema);注册,并且您的参考是大写的"User"。这些需要匹配。
标签: node.js mongoose mongoose-schema mongoose-populate