Mongoose - хранить несколько типов моделей в одном поле - PullRequest
0 голосов
/ 01 июля 2018

У меня есть схема, которая выглядит так:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const timestamps = require('mongoose-timestamps');

const BidSchema = new Schema({
  bidder: {
    type: Schema.ObjectId,
    ref: 'Buyer'
  },
  counterOffer: {
    type: Schema.ObjectId,
    ref: 'Counter_Offer'
  },
  box: {
    type: Schema.ObjectId,
    ref: 'Box'
  },
  status: {
    type: String,
    enum: ['Pending', 'Approved', 'Disapproved']
  },
  bidPrice: Number,
  bidTimeout: {
    type: Date,
    default: Date.now
  },
  isAnonymous: Boolean,
});

BidSchema.plugin(timestamps);

module.exports = mongoose.model('Bid', BidSchema);

Я хочу сохранить несколько типов данных в поле Box. Например, у меня есть модель Box, а также модель GroupedBox. Я хочу иметь возможность хранить идентификатор для обеих этих схем и соответственно заполнить это поле. Например, если в документе будет храниться ObjectId, который ссылается на документ GroupedBox, метод заполнит выборку нужного документа GroupedBox. То же самое относится к Box идентификатору документа.

Я читал о Mixed типах полей, но не понимаю, как это мне поможет.

1 Ответ

0 голосов
/ 01 июля 2018

замените box поле в вашем коде следующим:

box: {
     box: { type: Schema.Types.ObjectId, ref: 'Box' },
     groupedBox : { type: Schema.Types.ObjectId, ref: 'GroupedBox' }
}

Чтобы заполнить box, вам нужно получить доступ к окну с точкой populate("box.box"), аналогичной groupedBox, вы заполняете его таким образом populate("box.groupedBox")

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