[英]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:// user
: password
@ host
: port
/ 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.