在猫鼬中,使用相同的父项从另一个架构中填充一个架构

时间:2018-10-23 14:02:20

标签: node.js mongodb mongoose

我在猫鼬中具有以下架构(简化)。一个用户有多个帖子,一个配置文件存储在单独的架构中。现在,假设一个用户只能有一个userProfile。 Post和UserProfile模式都有对User模式的引用。我想find()张贴一些帖子,并为每个帖子填充用户的photoURL

简单的populate()不会解决问题,因为它可以使我获得关联的用户,但不能获得关联的userProfile。还有另一种方法吗?

如果没有,并且我必须对架构进行结构更改,是否可以解决以下注意事项:

  • 将帖子作为数组存储在User模式中非常低效,因为用户可以拥有数百个帖子。
  • 我可以在“用户”架构中添加对userProfile的引用,但这似乎效率不高,因为这样一来,我就必须在User和UserProfile架构之间维护双向引用。
  • “合并” UserProfile和User架构也是一个选项,但是我想将它们分开。在我的实际用例中,UserProfile中有很多字段,我希望将User模式限制为仅包含关键数据和敏感数据。

谢谢。

// Parent schema
var UserSchema = new Schema({
  username: {
    type: String,
    unique: true,
    required: true,
    trim: true
  },
  password: {
    type: String,
    required: true
  }
});

// Child schemas

var PostSchema = new Schema( {
  author: {
    type: Schema.Types.ObjectId,
    ref: 'User',
    required: true
  },
  content: {
    type: String
  }
});

var UserProfileSchema = new Schema({
  userID: {
    type: Schema.Types.ObjectId,
    ref: 'User',
    required: true
  },
  photoURL: {
    type: String,
    trim: true
  }
});

0 个答案:

没有答案