首页 > 解决方案 > MongoDB 投影不排除字段

问题描述

技术栈:React、Node 和 MongoDB(本机驱动程序)。

我正在使用简单的 MongoDB findOne 方法通过电子邮件查找用户。在这个 findOne 方法中,我包含了投影字段,它应该从数据库中的 MongoDB 文档中排除或包含某些字段。

响应被发送到使用户退出的回调函数(我将演示)。

我的问题:当我使用这个投影额外参数时,我所做的任何事情都不会影响我从请求中得到的结果。我错过了什么或做错了吗?

代码:

MongoDB方法:

static findUserInDatabase = ( method, searchParam, callback ) => {
        const db = getDb();
        if ( method === "email" ) {

            //This is where I have the issue
            db.collection( process.env.USERSCOLLECTION ).findOne( { email: searchParam.trim() }, { password: 0 } ).then( r => callback( r) ).catch( e => callback( e ) );
        } else {
            db.collection( process.env.USERSCOLLECTION ).findOne( { tokens: searchParam.trim() } ).then( r => callback( r ) ).catch( e => callback( e ) );
        }
    };

记录用户的节点代码:

User.findUserInDatabase( "email", friendEmail.email, ( friend ) => {
        console.log( friend );
        //Inside of this console.log I get all of the fields of the user, such as password field. 
    } );

这是 MongoDB 文档:

“以下操作在 bios 集合中找到一个文档,并仅返回 name、contribs 和 _id 字段:”

db.bios.findOne(
    { //Query },
    { name: 1, contribs: 1 }
)

标签: node.jsmongodb

解决方案


推荐阅读