Как получить доступ к вложенным данным, которые являются справочными данными в массиве в mongoose? - PullRequest
0 голосов
/ 20 мая 2019

Итак, у меня есть этот вложенный объект данных, который также является справочными данными. Когда я пытаюсь получить доступ к нему с помощью populate, он показывает только идентификатор. Я не хочу только идентификатор. Я также хочу, чтобы детали пришли вместе. Может кто-нибудь помочь мне в этом?

employeesdetails

Это EmployeesDetailsSchema, у которого есть это свойство employeeinfo со ссылкой на него. Теперь обозначение и свойство specialty, как вы можете видеть на изображении, указываются только в идентификаторах, а не в полных деталях. Мне нужны полные детали этих двух, а также других полей.

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const EmployeesDetailsSchema = new Schema({

  employeesinfo: {
    type: mongoose.Schema.Types.ObjectId, 
    ref: "employees" 
  },
  workingdays: Number,
  fathersname: String,
  pan: String,
  joiningdate: Date,
  gender: String,
  pfno: String,
  esino: String,
  branchname: String,
  department: String,
  paymode: String,
  bankname: String,
  acno: String,
  ifscno: String,

  //Earnings
  basicsalary: Number,
  extra: Number,
  totalE: Number,

  //Days
  fixeddays: Number,
  presentdays: Number,
  absentdays: Number,
  leavedays: Number,
  holidays: Number,

  //Deductions
  pf: Number,
  esi: Number,
  professionaltax: Number,
  advance: Number,
  absentdeductions: Number,
  leavedeductions: Number,
  totalD: Number,

  //Net pay Details
  netpay: Number,
  inwords: String,
  name: String,
  date: {
    type: Date,
    default: Date.now
  }
});

module.exports = EmpDetails = mongoose.model(
  "empdetails",
  EmployeesDetailsSchema
);

Это EmployeesSchema, которая является ссылкой в ​​свойстве employeeinfo EmployeesDetailsSchema

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const EmployeesSchema = new Schema({
  name: { type: String },
  email: { type: String },
  speciality: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "speciality"
  },
  contactno: { type: Number },
  designation: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "designation"
  },
  alternatecontactno: { type: Number },
  address: { type: String },
  employeeImage: { type: String },
  imageName: { type: String },
  date: { type: Date, default: Date.now() }
});

module.exports = Employees = mongoose.model("employees", EmployeesSchema);

И это две модели, на которые ссылается EmployeesSchema

//Speciality Type Schema
const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const SpecialitySchema = new Schema({
  speciality: {
    type: String
  },
  description: {
    type: String
  }
});
module.exports = Speciality = mongoose.model("speciality", SpecialitySchema);
//Designation Type Schema
const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const DesignationSchema = new Schema({
  designation: {
    type: String
  },
  description: {
    type: String
  }
});
module.exports = Designation = mongoose.model("designation", DesignationSchema);

А это маршрут get

router.get("/", (req, res) => {


 EmpDet.find()
    .populate({
      path: "employeesinfo"
    })
    .then(empdet => res.json(empdet))
    .catch(err =>
      res.status(400).json({ msg: "Error in finding Employees Details" })
    );
});

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Попробуйте это:

EmpDet.find()
    .populate({
      path: "employeesinfo",
      populate: [
         { path: 'speciality' },
         { path: 'designation' }
      ]

    })
    .then(empdet => res.json(empdet))
    .catch(err =>
      res.status(400).json({ msg: "Error in finding Employees Details" })
    );

Также, пожалуйста, ознакомьтесь с документацией, упомянутой Саймоном. https://mongoosejs.com/docs/populate.html

0 голосов
/ 20 мая 2019

Заполнить обычно возвращает весь указанный документ, если не заданы конкретные параметры.Может использоваться следующим образом: const story = await Story.findOne({ title: 'Some Titel' }).populate('authors');

См. Полную документацию и дополнительные образцы: https://mongoosejs.com/docs/populate.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...