You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mongoose中使用exists方法获取布尔值?

解决MongoDB exists()返回对象而非布尔值的问题

你的问题核心在于MongoDB的exists()方法返回的是Query查询对象,不是直接的布尔结果,必须执行这个查询才能拿到最终的布尔值。而且你手动封装Promise完全没必要,async函数本身就支持异步逻辑,直接用await处理即可。

修正后的代码:

async checkExisting(username, userCollection) {
    // 用await执行exists查询,拿到真正的布尔值
    const isExists = await userCollection.exists({ username });
    console.log(isExists); // 现在会输出true/false

    if (isExists) {
        return Promise.reject("Username taken");
    }
    return "Username available";
}

关键说明:

  • userCollection.exists({username})返回的是Query实例,只是一个查询描述,还没真正执行数据库查询,所以直接赋值会得到一个复杂对象
  • 加上await后,会等待查询完成,返回的就是布尔值(存在为true,不存在为false)
  • async函数里可以直接return值,会自动包装成Promise;返回reject也能正确传递状态

内容的提问来源于stack exchange,提问作者Nima Sherpa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:20:50