MongoDB.find()和MongoDB.findone()每次返回null ?



我有一个nodejs服务器连接到mongodb数据库。nodejs服务器将数据插入到集合中,但是每当我试图查找数据时,它总是返回null。我有一个文档在"Users"集合。但即使当我查询所有我的结果(res)变成null。

function isUsernameTaken(userData)
{
    connection.then(() =>{
        const db = client.db("test");
        console.log(db.collection('Users').find({}));
        db.collection('Users').find({username:userData.username}, function(err,res){
            
            console.log(res.length);
            if(err)
            {
                throw err;
            }
            if(res[0])
            {
                return true;
            }else
            {
                return false;
            }
        });
    })
}

这段代码是我的一个涉及db.collection.find的函数,但对于所有其他函数,我基本上都有相同的查询,没有运气。我还尝试了从集合(id, username, password)中查询确切的文档,但再次没有运气。

编辑:res不是空或未定义,res只是不返回任何文档从我的数据库

在我看来,async/await语法比以前的Promise和回调更容易编写、阅读和处理:

async function isUsernameTaken(userData)
{
    try{
        const res = await db.collection('Users').findOne({ username: userData.username });
        console.log(res);
        return !!res; // Casts truthy/falsy value to boolean. This does in fact return a value from isUsernameTaken().
    } catch(err) {
        throw err;
    }
}

然后你可以这样使用:

const isItTaken = await isUsernameTaken(someUserDataHere);

最新更新