【问题标题】:MongoDB Schema for interview time slot availability用于面试时隙可用性的 MongoDB Schema
【发布时间】:2021-04-03 04:35:39
【问题描述】:

我正在构建一个网站,管理员可以在其中通过选择参与者来创建采访, 面试开始时间和结束时间。我将参与者分为两组(集合) - 申请人和 Team_Members。 我尝试创建一个名为 Interviews 的第三个集合来跟踪每次采访的开始和结束时间,但我认为现在不需要第三个集合。 到目前为止,这些是我想出的模式 -

const applicantSchema = new Schema({
  name: {
    type: String,
    trim: true,
    required: [true, "Name is required"],
  },
  image: {
    type: String,
  },
  interviews: [
    {
      start_time: String,
      end_time: String,
    },
  ],
});

const interviewerSchema = new Schema({
  name: {
    type: String,
    trim: true,
    required: [true, "Name is required"],
  },
  image: {
    type: String,
    default: "download.png",
  },
  interviews: [{
    start_time: String,
    end_time: String,
  }, ],
});

每次预订新的采访后,我应该如何更新采访属性?在形成所需问题的模式方面,我是否朝着正确的方向前进?

【问题讨论】:

  • 你为什么要为面试构建 2 个独立的模式?
  • @FahadSubzwari 因为我想分别从面试官和被面试者中选择。
  • 您的采访记录是否在其他任何集合中,例如用户或任何其他集合?
  • @FahadSubzwari 不,我没有,我现在只有 2 个系列。我不知道为面试位置制作第三个是否会更好。

标签: javascript node.js mongodb mongoose nosql


【解决方案1】:

您可以对两者使用相同的架构。只需添加interviewee: { type: boolean, required: true } 并在您进行搜索时添加该条件。 对于面试的开始和结束时间,将值更改为日期,这样您就可以搜索它们并找到日期> $gt< $st,以确保您不会重复预订时间段。要标记已预订,只需添加另一个名为 `booked: { type: boolean, default: false'的值

const interviewSchema = new Schema({
  name: {
    type: String,
    trim: true,
    required: [true, "Name is required"],
  },
  image: {
    type: String,
  },
  interviewee: {
    type: Boolean,
    required: true
  },
  interviews: [
    {
      start_time: {
        type: Date, 
        default: new Date()
      },
      end_time:  {
        type: Date, 
        default: new Date()
      },
      booked: {
        type: Boolean, 
        default: false
      }
    },
  ],
});

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 2014-12-02
    • 2018-03-15
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2020-05-04
    相关资源
    最近更新 更多