繁体   English   中英

Mongoose Node Js加入两个集合

[英]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模式中, storiesstory_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM