我怎样才能找到 MongoDB 文档,通过 mongoose 虚拟字段查询?
How can I find a MongoDB document, querying by a mongoose virtual field?
如何使用 mongoose 的 'findOne'/'find' 函数找到特定的文档,其中的结果是通过虚拟字段过滤的,该字段实际上并未出现在数据库中?
我会尝试进一步解释:
在我的 'User' 模型中,我有一个名为 'email' 的字段。我想为我的 nodejs 应用程序中的其他功能(主要是登录验证和其他东西)为 'email' 创建一个别名作为 'userkey'。
为了创建别名,我这样做了:
userSchema.virtual('userkey').get(function()
{
return this.email;
});
现在,在创建别名后,我想按以下方式过滤我的搜索结果:
restApi.post('/login', function (req, res) // (using expressjs)
{
User.findOne({'userkey': req.body.userkey}).exec(..);
}
我怎样才能有效地做到这一点,而不需要创建更多 methods\field 等来节省时间和内存?
别名很重要,因为以后的app我会增加更多的登录方式,希望能快速切换字段关联'userkey'。这个别名省去了更改整个应用程序的麻烦(这是一个巨大的编程原则),并且可以帮助我添加更多将来需要的逻辑。
你不能。
mongodb 中存储的文档中不存在虚拟对象,因此没有任何可查询的内容。
如何使用 mongoose 的 'findOne'/'find' 函数找到特定的文档,其中的结果是通过虚拟字段过滤的,该字段实际上并未出现在数据库中?
我会尝试进一步解释:
在我的 'User' 模型中,我有一个名为 'email' 的字段。我想为我的 nodejs 应用程序中的其他功能(主要是登录验证和其他东西)为 'email' 创建一个别名作为 'userkey'。
为了创建别名,我这样做了:
userSchema.virtual('userkey').get(function()
{
return this.email;
});
现在,在创建别名后,我想按以下方式过滤我的搜索结果:
restApi.post('/login', function (req, res) // (using expressjs)
{
User.findOne({'userkey': req.body.userkey}).exec(..);
}
我怎样才能有效地做到这一点,而不需要创建更多 methods\field 等来节省时间和内存?
别名很重要,因为以后的app我会增加更多的登录方式,希望能快速切换字段关联'userkey'。这个别名省去了更改整个应用程序的麻烦(这是一个巨大的编程原则),并且可以帮助我添加更多将来需要的逻辑。
你不能。
mongodb 中存储的文档中不存在虚拟对象,因此没有任何可查询的内容。