如何使用' findOne' /'找到' mongoose的功能,我可以找到一个特定的文档,其中的结果是通过虚拟字段过滤的,该字段在物理上不会出现在数据库中吗?
我会尝试进一步解释:
在我的用户'模型,我有一个名为' email'的字段。我想为'电子邮件'创建一个别名。 as' userkey'我的nodejs应用程序中的其他功能(主要是登录验证和东西)。
要创建别名,我这样做了:
userSchema.virtual('userkey').get(function()
{
return this.email;
});
现在,在我创建了别名之后,我想以下列方式过滤搜索结果:
restApi.post('/login', function (req, res) // (using expressjs)
{
User.findOne({'userkey': req.body.userkey}).exec(..);
}
如何有效地执行此操作,而无需创建任何更多方法\字段等以节省时间和内存?
别名非常重要,因为在应用程序的未来,我会添加更多登录方式,并且我希望能够在字段之间快速切换以与“用户密钥”相关联。 。这个别名省去了更改整个应用程序的麻烦(这是一个巨大的编程原则),可以帮助我添加更多将来需要的逻辑。
答案 0 :(得分:1)
你不能。
mongodb中存储的文档中不存在虚拟内容,因此无需查询。