繁体   English   中英

MongoDB 和 Mongoose 使用了错误的数据库

[英]MongoDB with Mongoose is using wrong database

首先,我谦虚地请你看全文,我不得不写很多段来把情况解释清楚。

我有一个nodejs / express应用程序。 我正在使用mongoose来处理 MongoDB 的操作。 我在.env文件中存储了 MongoDB 连接字符串,连接到数据库的文件如下所示,

const mongoose = require("mongoose");
require("dotenv/config");

mongoose.connect(process.env.DB_CON_STRING, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true,
    useFindAndModify: false,
});

const connectionStatus = mongoose.connection;

connectionStatus.on("open", (_) => console.log("Connected to DB"));
connectionStatus.once("error", (err) => console.log(err));

我有一个与其他应用程序一样的登录路径,并且在本地一切正常。 由于它在本地运行良好,我决定在类似于生产的环境中进行测试。

为了使其生产就绪,我手动创建了数据库并创建了用户,并使用该用户在集合中插入了一个文档。 该文档包含我登录应用程序所需的数据。 我已经在 DigitalOcean 液滴内的 ubuntu 服务器上启动了该应用程序。

通常,当我向本地计算机上运行的应用程序发送登录请求时,它工作正常。 但是当我向远程端点发送登录请求时,我得到了错误。 仅供参考,这与 CORS 无关。 我已将其设置为允许从我提出请求的位置。 记录错误后,我得到了这样的东西,

MongoError:未授权测试执行命令

这简直令人沮丧。 我不明白为什么同样的事情在本地工作而不是在远程工作。 我可以 100% 向您保证我已经在远程机器上设置了数据库,创建了用户并且我的数据库连接字符串在远程也很好。 而且我的数据库不是“测试”。 那么,为什么它在测试呢?

早些时候我告诉过我有一个数据库和该数据库的用户。 我使用 ubuntu 服务器中的用户登录该数据库并插入数据。 数据库连接字符串准确地说是使用正确的凭据连接到正确的数据库。

有人请帮助我解释发生了什么。 这太令人沮丧了。

这必须是连接字符串中的错误。 一个正确且有效的连接字符串是这样的,

mongodb:// userpassword @ hostport / databaseName名称 ?authSource= databaseName名称

所以,这里的user当然是你的数据库用户, password就是密码。 host是您的主机,最常见的是“localhost”, port最常见的是“27017”。 在斜线之后,应该有数据库名称以及身份验证源。 示例连接字符串,

mongodb://ziondork:123456@localhost:27017/myDB?authSource=myDB

您的连接字符串中一定有问题,很可能是在您指定数据库名称和身份验证源的最后一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM