node.js - NodeJS/Mongoose - 连接后如何引用单个模型?
问题描述
我正在连接两个模型(博客和事件),因此我可以在单个 forEach 循环中显示两个集合中的所有记录:
const blogs = await Blog.find({});
const events = await Event.find({});
const blogsAndEvents = blogs.concat(events);
blogsAndEvents.forEach(function(blogOrEvent) { etc. etc.
但是,在 forEach 循环中,在某些情况下,我仍想引用它来自的原始模型,例如,'如果博客,标题等于博客,如果事件,标题等于事件)。我有一个解决方法,我使用每个模型的唯一字段来确定底层模型,如下所示:
if (blogOrEvent.blogPost) {
title = "BLOG"
} elseIf (blogOrEvent.eventDate) {
title = "EVENT"
}
这种方法对我来说似乎不是很干净,因为它依赖于它们在每个模型中都是一个独特的领域。是否有更好的方法可以访问循环中的原始底层模型?谢谢。
解决方案
使用 mongoose 文档可以清楚地验证Model
它们属于哪个使用instance of
:
const blogs = await Blog.find({});
const events = await Event.find({});
const blogsAndEvents = blogs.concat(events);
blogsAndEvents.forEach(function (blogOrEvent) {
if (blogOrEvent instanceof Blog) {
title = "BLOG";
} else if (blogOrEvent instanceof Event) {
title = "EVENT";
}
});
推荐阅读
- blockchain - 无法注册“源”类型的给定路径,因为它超出了内容根目录。- CORDA 模板 JAVA
- python-3.x - python 3中字典合并期间键值的总和
- entity-framework - 如何根据另一个表中的字段订购 IQueryable?
- angular - 迎合具有空值的 Angular 表单
- vhdl - 2 的指数幂
- swift - 如何在没有滚动视图的情况下使用 textField 为键盘移动 imageView?
- c# - 如何在完成异步任务之前等待 24 小时?
- python - Flask - 根据提供的输入呈现动态页面 URL
- angular - 如何让 Tesseract 与 Angular2+ 一起工作?
- javascript - 在Javascript中更新函数内部的全局变量