猫鼬-在一个字段中存储多种模型类型

时间:2018-07-01 10:54:27

标签: node.js mongodb mongoose

我有一个看起来像这样的模式:

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模型。我希望能够存储这两种模式的ID,并能够相应地填充此字段。例如,如果文档将存储引用GroupedBox文档的ObjectId,则populate方法将获取正确的GroupedBox文档。 Box文档ID也是如此。

我了解了Mixed个字段类型,但我看不到这对我有什么帮助。

1 个答案:

答案 0 :(得分:0)

使用以下代码替换代码中的box字段:

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

要填充box,您需要使用类似populate("box.box")的点groupedBox来访问框,您要用populate("box.groupedBox")

填充它