使用mongoose Collection ref为2个不同的集合

时间:2015-07-31 17:08:07

标签: node.js mongodb mongoose

所以,我在我的网站上创建了一个简单的帖子系统,里面有一个报告系统,这是我的报告集:

var ReportSchema = new mongoose.Schema({
    creator: {
       type: ObjectId,
       ref: 'User',
       required: true
    },
    owner: {
        type: ObjectId,
        ref: 'Post', //Here is my problem
        required: true
    },
    content: {
        type: String
    },
    created_at: {
        type: Date,
        default: Date.now
    },
    updated_at: {
        type: Date,
        default: Date.now
    }
});

我的问题是:报告集合应该适用于帖子报告(如上图所示),但我也想使用评论报告(我收集的评论)。有没有办法使用' ref'到2种不同类型的收藏品?

2 个答案:

答案 0 :(得分:2)

不要忘记Mongoose和Mongo不会在ref字段强制执行任何引用完整性的概念。它们用于支持获取依赖对象的.populate()查询。

如果你想对两种类型的报告实体使用相同的模式,我只需要放弃参考并添加另一个字段作为鉴别器使用。

答案 1 :(得分:1)

您需要将两个集合合并为一个,并为报告添加类似nav.opaque属性的内容,或者为上面的Schema引入新的ref属性,以便有一个用于评论,一个用于发布。 Mongoose无法从一个属性引用2个集合。