我有一个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);