[英]Mongoose Node Js Join two collections
我是MEAN Stack的新手,正在使用Node Js开发应用程序。
我有两个收藏说
var personSchema = Schema({ _id: Number, name: String, age: Number, stories: { type: Array, ref: 'Story' } }); var storySchema = Schema({ _creator: { type: Number }, story_id: String, fans: [{ type: Number }] }); var Story = mongoose.model('Story', storySchema); var Person = mongoose.model('Person', personSchema);
在“ Person
模式中, stories
是story_id
的列表,该列表是一个值数组。 我还需要列出所有人员数据以及他们的故事详细信息。
我用过Person.find().populate("stories");
但这会引发错误,
{
[CastError: Cast to ObjectId failed
for value "26747261"
at path "_id"
]
message: 'Cast to ObjectId failed for value "26747261" at path "_id"',
name: 'CastError',
kind: 'ObjectId',
value: 26747261,
path: '_id',
reason: undefined
}
请帮忙。
出现CastError的原因是您没有按照Person模式中的预期存储故事ID列表:
var personSchema = Schema({
...
stories : { type: Array, ref: 'Story' }
});
相反,您应该将其更改为:
var personSchema = Schema({
...
stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});
另请注意以下(从猫鼬的文档人口)
ObjectId,Number,String和Buffer有效用作引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.