首页 > 解决方案 > 无法将值从一个模式获取到另一个模式

问题描述

我创建了一个有两个模型的订单模式;StudentConsessionSchemaconsessionSchema

StudentConsessionSchema获取学生模型(学生模型包含学生的详细信息)。另一个模型consessionSchema获取StudentConsessionSchema(用于获取学生详细信息)。

当我在邮递员中对其进行测试以订购它时,它可以工作,但无法在consessionSchema.

订单架构

const mongoose = require("mongoose");
const { ObjectId } = mongoose.Schema;

const StudentConsessionSchema = new mongoose.Schema({
  student: {
    type: ObjectId,
    ref: "Student", //ref to the student model from another file
  },
  FullName: {
    type: String,
  },
  addmissionNumber: {
    type: String,
    required: true,
    trim: true,
    maxlength: 8,
  },
  faculty: {
    type: ObjectId, //ref to the faculty model from another file
    ref: "Faculty",
    required: true,
  },
});

const StudentConsession = mongoose.model(
  "StudentConsession",
  StudentConsessionSchema
);

const consessionSchema = new mongoose.Schema(
  {
    student: [StudentConsessionSchema], //this returns [] empty array
     consession_id: {},

    fromStation: {
      type: String,
      required: true,
    },
    toStation: {
      type: String,
      default: "Dadar",
    },
    passType: {
      type: String,
      enum: ["I", "II"],
      required: true,
    },
    ticketPeriod: {
      type: String,
      enum: ["Monthly", "Quarterly"],
      default: "Monthly",
      required: true,
    },
    status: {
      type: String,
      default: "Pending",
      enum: ["Pending", "Cancelled", "Accepted", "Printed"],
    },
    updated: Date,
  },
  { timestamps: true }
);

const Consession = mongoose.model("Consession", consessionSchema);

module.exports = { StudentConsession, Consession };

创建订单控制器

exports.createOrder = (req, res) => {
  let form = new formidable.IncomingForm();
  form.keepExtensions = true;

  form.parse(req, (err, fields) => {
    const {
      admissionNumber,
      fullName,
      faculty,
      fromStation,
      toStation,
      passType,
      ticketPeriod,
    } = fields;

    if (
      !admissionNumber ||
      !fullName ||
      !faculty ||
      !fromStation ||
      !toStation ||
      !passType ||
      !ticketPeriod
    ) {
      return res.status(400).json({
        error: "Please fill all fields",
      });
    }
    let consession = new Consession(fields);
    // const consession = new Consession(req.body.consession);
    if (req.student.pass === 1) {
      return res.status(400).json({
        error:
          "You are not eligible to make request Because You already have a pass",
      });
    }

    consession.save((err, order) => {
      if (err) {
        console.log(err);
        return res.status(400).json({
          error: "Failed to make order",
        });
      }
      res.json(order);
    });
  });
};

输出

{
    "toStation": "abc",
    "ticketPeriod": "Monthly",
    "status": "Pending",
    "_id": "600e789887b9a201bc4c2d1a",
    "fromStation": "xyz",
    "passType": "II",
    "student": [],
    "createdAt": "2021-01-25T07:51:52.091Z",
    "updatedAt": "2021-01-25T07:51:52.091Z",
    "__v": 0
}

我的问题是为什么学生数组是空的?

标签: javascriptreactjsmongodbmongoosemongoose-schema

解决方案


推荐阅读