【发布时间】:2021-03-01 11:42:53
【问题描述】:
我有一个名为 Message 的模式,定义类似:
const messageSchema = new mongoose.Schema({
name : {type : String}
});
module.exports('Message',messageSchema);
我有另一个名为 Topic 的架构,它使用“消息”作为参考对象。
const topicSchema = new mongoose.Schema({
topics : { type : mongoose.Schema.Types.ObjectId , ref : 'Message' }
});
module.exports('Topic',topicSchema);
我有一个名为 Thread 的架构,它使用一个“主题”对象引用数组。
const threadSchema = new mongoose.Schema({
thread : [{ type : mongoose.Schema.Types.ObjectId , ref : 'Topic' }],
name : {type : String}
});
module.exports('Thread',threadSchema);
如果我们有一个“线程”文档,如何访问所有的“消息”元素?
我尝试了以下操作:
Thread.findOne({name : 'Climate'}).populate('thread').populate('topics').exec(function(err,data){})
但由于 thread 人口有一个数组,所以我遇到了错误。请帮助正确取消引用 message 对象。
【问题讨论】:
-
提供的代码似乎有些错误。例如,在您的
topicSchema中,您正在导出messageSchema。同样在threadSchema中,您又在引用Thread本身?如果这些只是复制粘贴拼写错误,请先更正它们,以便您的架构示例有效。 -
道歉@JakubASuplicki。这些是简单的复制粘贴错别字。我已更改问题以反映您的 cmets。感谢您指出这一点。
标签: node.js mongoose mongoose-populate