Mongoose One-to-Many, как получить значение поля категории

У меня 2 коллекции: Категория и книга

Книга:

      const mongoose = require('mongoose');
        // eslint-disable-next-line camelcase
        const mongoose_delete = require('mongoose-delete');
        
        const { Schema } = mongoose;
        const SchemaTypes = mongoose.Schema.Types;
        const Book = new Schema({
          name: { type: String },
          price: { type: Number },
          images: { type: Array },
          country: { type: String },
          author: { type: String },
          publicationDate: { type: String },
          description: { type: String },
          category: { type: SchemaTypes.ObjectId, ref: 'Category' },
          date: { type: Date, default: Date.now },
        }, {
          timestamps: true,
        });
        Book.plugin(mongoose_delete);
        Book.plugin(mongoose_delete, { overrideMethods: 'all', deletedAt: true });
        module.exports = mongoose.model('Book', Book);

Категория:

      const mongoose = require('mongoose');
        // eslint-disable-next-line camelcase
        const mongoose_delete = require('mongoose-delete');
        
        const SchemaTypes = mongoose.Schema.Types;
        const { Schema } = mongoose;
        
        const Category = new Schema({
          name: { type: String, required: true },
          image: { type: String },
          products: [{ type: SchemaTypes.ObjectId, ref: 'Book' }],
          date: { type: Date, default: Date.now },
        }, {
          timestamps: true,
        });
        Category.plugin(mongoose_delete);
        Category.plugin(mongoose_delete, { overrideMethods: 'all', deletedAt: true });
        module.exports = mongoose.model('Category', Category);

и выбираю все полученные книги в списке:

      {
        _id: new ObjectId("623668ac5b1d392b37690cbc"),
        name: 'The Godfather',
        price: 110000,
       
        country: 'U.S',
        publicationDate: '1969',
        category: new ObjectId("6238fdf64f60303756b60b20"),
        author: 'Mario Puzo',
        ... : ...

}

И я хочу отобразить название категории в списке товаров, как мне это сделать? **лайк: {{book.category.name}}

{{book.category.image}}

?**

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
36
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

попробуйте $lookup (агрегация)

Book.aggregate([{
    $lookup: {
        from: "Category", 
        localField: "category",
        foreignField: "_id",
        as: "category"
    }
}]).exec(function(err, students) {
   
});
Ответ принят как подходящий

Поскольку вы используете Mongoose, вы можете использовать метод populate(). Вы можете сделать это следующим образом:

const books = await Books.find().populate('category')

Другие вопросы по теме