Routfin
Routfin

Reputation: 457

How to receive an array from a model inside another model? (mongoose) (mongoDB)

I have an order model/schema, and my goal is that in this model in "list", I receive the information from the model cart in array format. How could I do this using ref?

cart model

const mongoose = require('mongoose');

const CartSchema = new mongoose.Schema(
    {
        name: {
            type: String,
            required: true,
        },
        note: {
            type: String,
            required: true,
        },
        price: {
            type: Number,
            required: false,
        },
        createdAt: {
            type: Date,
            default: Date.now,
        }
    },
    { timestamps: true }
  );
  
module.exports = mongoose.model("Cart", CartSchema);

order

const mongoose = require('mongoose');

const OrderSchema = new mongoose.Schema(
    {
        list: {
            name: String,
            notes: String,
        },
        totalAmount: {
            type: Number,
            required: true,
        },
        payment: {
            type: String,
            required: true,
        },
        address: {
            type: String,
            required: true,
        },
        addressNote: {
            type: String,
            required: false,
        },
        createdAt: {
            type: Date,
            default: Date.now,
        }
    },
    { timestamps: true }
  );
  
module.exports = mongoose.model("Order", OrderSchema);

Basically receive in array format the information of the model cart in "list" in model order

Upvotes: 0

Views: 72

Answers (1)

lpizzinidev
lpizzinidev

Reputation: 13289

You should define your list as an array of ObjectIds referring to the Cart model:

const OrderSchema = new mongoose.Schema(
  {
      list: [{
          type: mongoose.Schema.Types.ObjectId,
          ref: 'Cart'
      }],
      ...
  });

Then, to retrieve the values in list, just populate the Order:

Order.find({}).populate('list').exec();

Upvotes: 1

Related Questions