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

oewdyzsn  于 2023-03-23  发布在  Go
关注(0)|答案(2)|浏览(120)

首先,我恳请大家阅读全文,我不得不写了许多段落,把情况解释清楚。
我有一个nodejs/express应用程序。我使用mongoose来处理MongoDB的操作。我将MongoDB连接字符串存储在.env文件中,连接到数据库的文件如下所示:

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 droplet内的Ubuntu服务器上启动了应用程序。
通常情况下,当我发送登录请求到我的本地机器上运行的应用程序,它工作正常.但是,当我发送登录请求到远程端点,我得到了错误.和FYI,这与CORS无关.我已经设置它允许从我发出请求的地方.记录错误后,我得到了这样的东西,
MongoError:未授权测试执行命令
这真是令人沮丧。我不明白为什么同样的事情在本地工作,但在远程没有。我可以100%向你保证,我已经设置了远程机器上的数据库,创建了用户和我的数据库连接字符串也在远程罚款。我的数据库不是'测试'。那么,为什么它是做测试?
前面我告诉我有一个数据库和一个数据库的用户。我在我的ubuntu服务器上用这个用户登录了那个数据库并插入了数据。数据库连接字符串确切地说是用正确的凭据连接到正确的数据库。
谁来帮我解释一下发生了什么事。这太令人沮丧了。

clj7thdc

clj7thdc1#

这一定是连接字符串中的错误。一个正确的和工作的连接字符串应该是这样的,
mongodb:// userpassword@hostport / databaseName?authSource= databaseName
所以,这里的user当然是你的数据库用户,password是密码。host是你的主机,最常见的是'localhost',而port最常见的是'27017'。在斜杠之后,应该有数据库名称以及auth源。示例连接字符串,

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

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

p1iqtdky

p1iqtdky2#

也许有点晚了,但是你有没有限制访问数据库,只允许某个ip?
添加一个Mozilla开发者指南的链接,在那里他们可以完成mongoDB的设置。

引用,形成指南中的bulletpoint 4!

在0.0.0.0/0IP地址字段中输入www.example.com。这告诉MongoDB我们希望允许从任何地方访问。单击添加条目按钮。
MongoDB上的MDN指南:https://developer.mozilla.org/en-US/docs/Learn/Server-side/Express_Nodejs/mongoose#setting_up_the_mongodb_database

相关问题