是否可以从猫鼬的文档中获取模型?

Posted

技术标签:

【中文标题】是否可以从猫鼬的文档中获取模型?【英文标题】:Is it possible to get the model from the document in mongoose? 【发布时间】:2013-07-15 02:44:00 【问题描述】:
var UserSchema = new Schema(...); // Schema
var User = mongoose.Model('User', UserSchema); // Model
var user = new User(...); // Document

只给定文档(在这种情况下是用户),是否有一种简单的方法来获取模型(在这种情况下是用户),而无需事先了解文档所指的模型是什么?有一个 user.schema,但据我所知,没有 user.model。

给定上下文一个文档和一个路径,我想知道在 DB 中是否有其他与该路径具有相同值的对象。

谢谢。

【问题讨论】:

【参考方案1】:

假设您有一个 user 变量,它是 User 模型的一个实例,但这适用于任何猫鼬模型实例 var Model = user.constructor; 现在您可以使用 Model.find() 来运行您的查询,这将适用于任何集合.

如需模型名称,可通过user.constructor.modelName获取。

【讨论】:

谢谢!不知道构造函数属性。你能把它简化为 var Model = user.constructor 吗?从 mongoose 对象重新查询的任何特殊原因? 是的,只有model.constructor.find 也可用。我更新了我的答案。 在使用 Promise 同时解决几个查询然后找出实际返回的内容时效果很好,即:Promise.all(promises).then(data => console.log(data[1].constructor.modelName) );

以上是关于是否可以从猫鼬的文档中获取模型?的主要内容,如果未能解决你的问题,请参考以下文章

从猫鼬的多个集合中获取数据?

如何从猫鼬的数组中找到对象

获取子文档猫鼬的新创建/推送元素的值

如何从猫鼬集合中检索模式?

你如何从猫鼬中删除模型?

如何从猫鼬中获取类型化的对象