我正在使用mongo和mongoose,并且正在尝试为我的应用建模。
我有以下模型:ProductA,ProductB和ProductChat。
每个产品可以有很多聊天记录。每次聊天都与一个产品(A或B)相关。
我希望ProductChat可以参考相关的产品文档。我考虑过将productType,productId字段添加到ProductChat:
const ProductChatSchema = new Schema({ ... ... productType: { type: 'String', required: true, enum: [ 'A', 'B' ] }, product: { type: Schema.Types.ObjectId, required: true, ref: '???' // Ref to what? }, ... ...});
但我不知道该在“参考”上加上什么...
我想避免在ProductChat上添加productAId,productBId字段,因为可能会有很多产品。
任何想法如何做到正确?

最佳答案

由于有很多产品,因此将ProductChat引用提供给数组中的ProductsA(B,C ..)集合。

const productA = new Schema({
    ProductChatIds: [{
        type: Schema.Types.ObjectId,
        ref: 'ProductChat'
    }]
});

const productB = new Schema({
    ProductChatIds: [{
        type: Schema.Types.ObjectId,
        ref: 'ProductChat'
    }]
});

10-08 02:58