多对多关系中的其他字段

时间:2018-08-12 20:29:28

标签: node.js mongodb mongoose many-to-many

在用户架构中,我需要使用blocked属性定义联系人字段。

我的实际定义是这样的:

const UserSchema = new Schema({
  id: Schema.Types.ObjectId,
  // Other fields
  // ...
  contacts: [{
    type: Schema.Types.ObjectId,
    ref: 'User'
  }]
}

const UserModel = mongoose.model('User', UserSchema);

从那里我找不到在相同引用关系blocked中添加contacts字段的可能方法。是否有必要创建一个中介集合以将其他字段添加到关系中?

1 个答案:

答案 0 :(得分:0)

我最终创建了一个联系人集合,该集合同时包含对用户的引用以及我需要的其他字段:

//user.js
const UserSchema = new Schema({
  id: Schema.Types.ObjectId,
  // Other fields
  // ...
  contacts: [{
    type: Schema.Types.ObjectId,
    ref: 'Contact'
  }]
}

const UserModel = mongoose.model('User', UserSchema);

//contact.js
const ContactSchema = new Schema({
  id: Schema.Types.ObjectId,
  contact: {
    type: Schema.Types.ObjectId,
    ref: 'User'
  },
  blocked: {
    type: Boolean,
    required: true
  }
}

const ContactModel = mongoose.model('Contact', ContactSchema);