сохранение сложной структуры в mongodb с помощью экспресса и монго - PullRequest
1 голос
/ 21 апреля 2019

Я новичок в mongodb, node и express.Я пытаюсь сохранить эти данные в mongodb.

У меня есть staff.model.js следующим образом

let StaffSchema = new Schema({
    staffcode:String,
    firstname:String,
    lastname: String,
    type: String,
    department:String,
    dateofjoin:Date,
    lastworkingday:Date,
    teaching:[ {type:Schema.Types.ObjectId, ref:'Teaches'} ]
});

У меня есть еще одна схема, которая учит следующим образом

let TeachesSchema = new Schema({
    standard:{type: Schema.Types.ObjectId, ref: 'Standard'},
    subjects:[{type: Schema.Types.ObjectId, ref: 'Subject'}]
});

другая схема стандартов выглядит следующим образом

let StandardSchema = new Schema({
    name:String,
    medium:String,
    section:String
});

другая схема применяется следующим образом

let SubjectSchema = new Schema({
    name:{ type: String, required: true, max: 25 }
});

наконец я пытаюсь сохранить данные в mogodb как

exports.staff_create = function(req, res){
    let staff = new Staff({
        staffcode:req.body.staffcode,
        firstname:req.body.firstname,
        lastname: req.body.lastname,
        type: req.body.type,
        department:req.body.department,
        dateofjoin:req.body.dateofjoin,
        teaching:req.body.teaching
    });
    staff.save(function(err){
        if(err){
            return next(err);
        }
        res.send('Staff created successfully');
    });
};

выполнение вызова API от почтальона с таким вводом

{
  "staffcode": "STF0003",
  "firstname": "Joh Doe",
  "lastname": "Moy",
  "type": "teaching",
  "department": "physics",
  "dateofjoin": "2018-06-01",
  "teaching": {
    "standard": {
      "_id": "5cb8ff551a1c1a2514fa467c",
      "name": "1",
      "medium": "English",
      "section": "A"
    },
    "subjects": [
      {
        "_id": "5cb8ed65c068b22f5489d050"
      },
      {
        "_id": "5cb8ed6bc068b22f5489d051"
      }
    ]
  }
}

что в этом плохого?Я не могу получить успешный ответ на запрос почтальона.

1 Ответ

0 голосов
/ 22 апреля 2019

ваш дизайн схемы исходит из реляционных баз данных. Однако вы можете делать то, что просите, используя populate .

лучшим способом было бы использовать встроенные документы вместо ссылок, в некоторых местах проверьте этот ответ о отношениях MongoDB: вставка или ссылка?

...