MEAN.JS 缺少架构错误
MEAN.JS MissingSchemaError
我正在玩 MEAN.JS 看看我喜欢它,我得到了一个我通常可以解决的错误,但这次我似乎无法弄清楚我可能做错了什么。
我正在尝试使用 mongooses 填充方法填充子对象,但我现在收到此错误:MissingSchemaError: Schema hasn't been registered for model "topic"
这是有道理的...确保 "topic" 模型架构是加载。我以为应该按照MEAN.js
中的加载顺序加载
moment.server.model.js
'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
'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);
导致错误的查询:
Moment.find().sort('-created').populate('user', 'displayName', 'topic').exec(function(err, moments) { ... }
可能是什么原因导致此错误,我该如何解决?我之前在其他节点系统中解决过这个问题,但在 meanjs 中我认为我遗漏了一些基本的东西。
想通了。我忽略了如何正确使用填充。要修复,我只是将另一个填充调用链接到另一个 dbRef 值,如下所示:
Moment.find()
.sort('-created')
.populate('user', 'displayName')
.populate('topic')
.exec(function(err, moments) {
// do stuff with results
});
现在主题和用户名都填好了。
刚给自己写了一张便利贴:RTFM。
我正在玩 MEAN.JS 看看我喜欢它,我得到了一个我通常可以解决的错误,但这次我似乎无法弄清楚我可能做错了什么。
我正在尝试使用 mongooses 填充方法填充子对象,但我现在收到此错误:MissingSchemaError: Schema hasn't been registered for model "topic"
这是有道理的...确保 "topic" 模型架构是加载。我以为应该按照MEAN.js
moment.server.model.js
'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
'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);
导致错误的查询:
Moment.find().sort('-created').populate('user', 'displayName', 'topic').exec(function(err, moments) { ... }
可能是什么原因导致此错误,我该如何解决?我之前在其他节点系统中解决过这个问题,但在 meanjs 中我认为我遗漏了一些基本的东西。
想通了。我忽略了如何正确使用填充。要修复,我只是将另一个填充调用链接到另一个 dbRef 值,如下所示:
Moment.find()
.sort('-created')
.populate('user', 'displayName')
.populate('topic')
.exec(function(err, moments) {
// do stuff with results
});
现在主题和用户名都填好了。
刚给自己写了一张便利贴:RTFM。