猫鼬鉴别器行为

Kev*_*vin 2 mongoose mongodb

我有一些关于猫鼬鉴别器的问题。

它们支持多级继承吗?就像模型 C 继承模型 B 又继承模型 A 一样?从阅读文档来看,这似乎是不可能的,它只解释了一个继承级别,例如我有一个通用事件,然后我在该事件下有特定的事件类型。

是否可以在查询中查询所有匹配的鉴别器类型?例如,有一个基本事件,我有特定事件,例如 ClickEvent 和 BrowseEvent。也许基本事件有一个 user_id 字段和一个时间戳。我想要特定用户在过去 1 小时内发生的点击和浏览事件。那可能吗?该文档不遗余力地解释了各种查找器方法都是区分器感知的,它定义为它们根据查询方式自动选择正确类型的对象。例如ClickEvent.findOne仅返回点击事件。好吧,很公平,但是GenericEvent.findOne返回所有事件还是只返回通用事件?

Kev*_*vin 5

因此,由于缺乏答案,我决定不再偷懒,编写一个程序来测试该行为。所以我发现,如果您尝试拥有继承链,它会抛出类似于Discriminator "Derived2" can only be a discriminator of the root model. 因此,您只能拥有一个基础架构,然后再拥有该基础架构的派生架构。但是,如果您使用查询,Base.findOne您将发现任何派生类型。