首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MEAN.JS MissingSchemaError

MEAN.JS MissingSchemaError
EN

Stack Overflow用户
提问于 2015-01-31 14:34:27
回答 1查看 151关注 0票数 0

我正在玩MEAN.JS,看看我有多喜欢它,我得到了一个错误,我通常可以解决,但这一次,我似乎找不出我可能做错了什么。

我试图使用mongooses填充方法填充一个子对象,但我现在得到了以下错误:MissingSchemaError: Schema hasn't been registered for model "topic" --这是合理的.确保加载了“主题”模型模式。我认为它应该按照MEAN.js中的装载顺序加载。

moment.server.model.js

代码语言:javascript
复制
'use strict';

/**
 * Module dependencies.
 */
var mongoose = require('mongoose'),
    Schema = mongoose.Schema;

/**
 * Moment Schema
 */
var MomentSchema = new Schema({
    name: {
        type: String,
        default: '',
        required: 'Please fill Moment name',
        trim: true
    },
    content: {
        type: String,
        default: '',
        trim: true
    },
    created: {
        type: Date,
        default: Date.now
    },
    topic: {
        type: Schema.ObjectId,
        ref: 'Topic'
    },
    user: {
        type: Schema.ObjectId,
        ref: 'User'
    }
});

mongoose.model('Moment', MomentSchema);

topic.server.model.js

代码语言:javascript
复制
'use strict';

/**
 * Module dependencies.
 */
var mongoose = require('mongoose'),
    Schema = mongoose.Schema,
    moment = require('moment-timezone');

/**
 * Topic Schema
 */
var TopicSchema = new Schema({
    name: {
        type: String,
        default: '',
        required: 'Please fill Topic name',
        trim: true
    },
    created: {
        type: Date,
        default: Date.now
    },
    user: {
        type: Schema.ObjectId,
        ref: 'User'
    },
    moments: [
        {
            type: Schema.ObjectId,
            ref: 'Moment'
        }
    ]
});

mongoose.model('Topic', TopicSchema);

导致错误的查询:

代码语言:javascript
复制
Moment.find().sort('-created').populate('user', 'displayName', 'topic').exec(function(err, moments) { ... }

是什么导致了这个错误,我如何修复它?我以前已经在其他节点系统中解决过这个问题,但是我认为我忽略了一些基本的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-31 19:15:16

弄明白了。我忽略了如何正确地使用填充。要修复这个问题,我只需将另一个填充调用链接到另一个dbRef值:

代码语言:javascript
复制
 Moment.find()
    .sort('-created')
    .populate('user', 'displayName')
    .populate('topic')
    .exec(function(err, moments) { 
        // do stuff with results
    });

现在主题和用户名都被填充了。

刚给我自己写了一张贴纸,题为: RTFM。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28252771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档