Попытка заполнить объект внутри другого объекта, который находится внутри другого объекта (NODE.JS) - PullRequest
0 голосов
/ 18 декабря 2018

Эта функция получает определенный «процесс» и показывает следующую информацию в формате json: (POSTMAN)

{
    "process": {
        "_id": "5c18e8d1d4817811839d43d2",
        "name": "Dyeing",
        "colour": {
            "_id": "5c18c972b39bb20769288e8f",
            "name": "azul",
            "category": "5c18c09f4c6baf05ea621bca",
            "__v": 0
        },
        "__v": 0
    },
    "request": {
        "type": "GET",
        "url": "http://localhost:3000/process"
    }
}

Функция контроллера процесса

   exports.process_get_process = (req, res, next) => {
    Process.findById(req.params.processId)
      .populate("colour")
      .populate("category")
      .exec()
      .then(process => {
        if (!process) {
          return res.status(404).json({
            message: "Process not found"
          });
        }
        res.status(200).json({
          process: process,
          request: {
            type: "GET",
            url: "http://localhost:3000/process"
          }
        });
      })
      .catch(err => {
        res.status(500).json({
          error: err
        });
      });
};

Модель для "процесса" имеет следующую схему:

const mongoose = require('mongoose');

const processSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    name: { type: String, required: true },
    price: { type: Number, required: false },
    colour: { type: mongoose.Schema.Types.ObjectId, ref: 'Colour', required: false },
});

module.exports = mongoose.model('Process', processSchema);

Это модель цвета: Как вы можете видеть, объект "категория" находится внутри "цвета", и я хочупокажите его и в объекте "process".

const mongoose = require('mongoose');

const colourSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    name: { type: String, required: true },
    category: { type: mongoose.Schema.Types.ObjectId, ref: 'Category', required: true },
});

module.exports = mongoose.model('Colour', colourSchema);

Проблема: Внутри "color" существует объект "category", но отображается только идентификатор категории, и я хочуему показать всю информацию о категории.Как я могу его заполнить?

1 Ответ

0 голосов
/ 19 декабря 2018

Вы можете указать это как опции для функции populate.

Process.findById(req.params.processId)
      .populate({
           path: 'colour',
           populate: { path: 'category' }
       })
      .exec()
...