【问题标题】:why does function return false from AtlasDB and true for my local version为什么函数从 AtlasDB 返回 false 而对于我的本地版本返回 true
【发布时间】:2020-05-12 23:33:53
【问题描述】:

我正在检查 Atlas:MongoDB 中是否存在集合 usersuser当我查询我的本地版本时,我得到了预期的结果。当我查询 AtlasDB 时,我得到了错误。我希望 AtlasDB 的查询返回 true,因为它应该与我复制的数据完全相同。



我的查询:let isUser = await userDB.isValidUser(username, password);

let isValidUser = async function(username, password){
    return user.exists({'userID': username, 'password': password});
}


我知道我的猫鼬连接很好;没有错误或超时或任何东西。 那么为什么当mongoose连接AtlasDB版本时isValidUser()函数没有返回true呢?

我试过了:

  • 刷新 Atlas DB 并确保我有最新的连接字符串以防万一发生变化
  • 在通过 shell 访问 AtlasDB 时验证完全相同的查询/输入是否工作
  • 在两种情况下通过应用程序调试来验证查询输入是否相同:查询 localDB 和查询 AtlasDB 时。

【问题讨论】:

  • 不确定它是否重要,但只是返回而不是等待两次return user.exists

标签: node.js express mongoose mongodb-atlas


【解决方案1】:

我没有在我的连接字符串中指定数据库名称。虽然连接确实到达了集群,但它正在寻找 AtlasDB 默认放入的“测试”数据库。

AtlasDB 提供的默认连接:

mongodb+srv://<Username>:<Password>@cluster0-vbexh.mongodb.net/test?retryWrites=true&w=majority

我只需要将 test 替换为我的数据库名称。

【讨论】:

    猜你喜欢
    • 2015-06-21
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 2018-08-27
    • 2018-11-09
    • 1970-01-01
    • 2019-12-07
    相关资源
    最近更新 更多