node.js - 使用 API 调用创建新数据库
问题描述
我想在 API 调用时创建一个新数据库。我已经连接到一个主数据库。
我试过使用 mongoose.connect() 方法。它给了我一个积极的回应。但是当我签入 mongo 控制台时,我没有找到新创建的数据库。
这是我的代码。
const connectionString = `mongodb://${process.env.DB_HOST}:${
process.env.DB_PORT
}/client_${Math.random()
.toString(36)
.substring(2, 8)}`;
mongoose.connect(
connectionString,
{
autoReconnect: true,
reconnectTries: 60,
reconnectInterval: 10000,
useNewUrlParser: true,
useCreateIndex: true
},
(error) => {
if (error) {
console.log(error);
} else {
console.log('Connected');
}
}
);
希望你明白我的意思。寻找解决方案。
解决方案
根据 mongodb 文档:
如果数据库不存在,MongoDB 会在您首次存储该数据库的数据时创建该数据库。因此,您可以切换到不存在的数据库并在 mongo shell 中执行以下操作。关联
这对于 mongo-shell 也是如此,如果您确实use mydb;
创建了一个并立即执行show dbs;
它不会显示,除非您为它创建一些数据,mydb
例如createCollection(), insert() etc
.
所以你的代码没问题,因为connect()
它和use db;
. 除非您为该数据库创建一些数据,否则您不会在 mongo 控制台中看到它。
推荐阅读
- python - Python日志记录模块,日志文件问题:PermissionError:[WinError 32]进程无法访问该文件,因为它正在被另一个进程使用
- javascript - 如何使用 javascript 填充由 Django 创建的 HTML 表?
- arrays - 递归和数组 - 基本情况 - 长度等于 0 或 1
- javascript - 无法读取未定义的属性“getAboutInfo”
- flutter - 构建函数返回 null Flutter
- c# - 在没有端口转发的情况下通过 TCP 连接?
- java - 如何在 java 中测试 Woocommerce webhook
- firebase - 为什么 BigQuery 将 Firebase user_property 转换为 int?
- java - 如何将 @Rule of Testname 从 junit4 从抽象 java 类迁移到 Junit 5 中的 TestInfo?
- java - 使用正则表达式屏蔽信用卡号