【问题标题】:mongoose Missing schema error while populating猫鼬填充时缺少架构错误
【发布时间】: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


【解决方案1】:

因为您的参考是“User”,我认为您只需使用正确的 Typpo 声明您的第一个模型

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

而不是

module.exports = mongoose.model('user', UserSchema);

希望对你有帮助。

【讨论】:

  • 我已经改变了,但仍然无法正常工作,我拥有@Buu97 的所有内容
  • 用您的代码示例提出问题,我可以尝试帮助您
  • 谢谢@Sparw,似乎同样的冲突可能发生在具有循环依赖但已经解决的 GraphQL 上,谢谢!
猜你喜欢
  • 2017-04-18
  • 2017-04-04
  • 2018-11-05
  • 1970-01-01
  • 2015-05-03
  • 2018-06-01
  • 2015-07-13
  • 2016-10-10
相关资源
最近更新 更多