我正在使用MEAN堆栈来构建此应用程序。
这是我的subject.js架构:
var mongoose = require('mongoose');
var schema = mongoose.Schema;
var topics = require('./topic');
var subjectSchema = new schema({
_category : {
type: String,
default: ""
},
topics: [topics.schema]
});
module.exports = mongoose.model('Subject', subjectSchema);
和我的topics.js架构:
var mongoose = require('mongoose');
var schema = mongoose.Schema;
var otherstuff = require('./otherstuff');
var otherstuff2 = require('./otherstuff2');
var topicSchema = new schema ({
title: String,
otherstuff: [mongoose.model('otherstuff').schema],
otherstuff2: [mongoose.model('otherstuff2').schema]
});
module.exports = mongoose.model('Topic', topicSchema);
我遇到的困难是如何访问我的topicSchema以使用我前端的表单填充它。
我可以将信息保存到subjectSchema,但不保存子文档。
我尝试过使用另一篇文章中概述的内容:
var Subject = mongoose.model('Subject', subjectSchema);
Subject.find({}).populate('subjects[0].topics[0].title').exec(function(err, subjects) {
console.log(subjects[0].topics[0].title);
});
但我继续得TypeError: Cannot read property 'title' of undefined
。如何访问title属性?
答案 0 :(得分:1)
populate
中的 mongoose
用于填充引用的文档,这些文档标有ref
属性(请参阅docs中的更多信息)。另一方面,子文档在进行简单查询时可用,因为它们实际上是一组自定义对象,因此如果删除populate
方法,查询将按预期工作:
Subject.find({}).exec(function(err, subjects) {
console.log(subjects[0].topics[0].title);
});