首页 > 解决方案 > 从两个不同的模式中删除

问题描述

我创建了一个 Gym Web App 作为体验,但我已经到了无法弄清楚如何解决这个问题的阶段。我有用户和 GymClasses。

当您为自己预订体育课时,它会将userId. classMembers array然后还将附加到的类存储user在其架构中。

所以问题是当试图删除一个有用户注册的课程时,它会按预期删除该课程,但我需要让每个userId注册到该课程的课程并删除classId他们参加的课程。

这是的图像class Schemas

在此处输入图像描述

正如您所看到的,Class Schema有一个classMembers array填充了userId's哪些注册到班级的内容。

这是用户架构:

const bookedClassesSchema = mongoose.Schema({
  classId: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'createClass',
  },
  dateBooked: {
    type: Date,
  }
})

const userSchema = mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true
  },
  address: {
    type: String,
    required: true
  },
  gymLocation: {
    type: String,
    required: true
  },
  bookedClasses: [bookedClassesSchema]
});

现在考虑到这将是在删除类之前,循环classMembers array抓取每个userId用户,因为我们已经有了ClassId要删除的,然后ClassIdbookedClasses array. 我不确定如何做到这一点,所以任何建议都会很棒!

这是我到目前为止所做的:

exports.deleteClass = (req, res) => {
  let classId = req.params.id;
  let users = [];
    GymClass.findById({
      _id: classId
    }, 'classMembers', (res ,err) => {
      if (err) {
        res.status(401).json({
          message: "Error Occured!"
        })
      } else {
        res.push(users);
        users.forEach(function(element) {
          console.log(element);
        });
          users.forEach( (users.userId) => {
            console.log(users.userId);
          });

我没有比这更进一步,任何示例或帮助将不胜感激!

标签: javascriptmongodbexpressmongoose

解决方案


推荐阅读