Mongoose - 尽管建立了连接,数据库并未显示在 GUI 上

com*_*ich 0 database mongoose mongodb express

我正在从头开始编写一个简单的 Express 应用程序。我已经使用 mongoose 建立了数据库连接。我现在想要实现的只是简单地使数据库显示在 mongo GUI 上(我同时使用 mongo compass 和 Robo 3T)。这是我的server.js

import express from 'express'
import mongoose from 'mongoose'

require('dotenv').config()

const server = express()

server.get('/', (req, res) => {
    res.send("Hello World");
});

const port = process.env.PORT || 5000;

mongoose.connect(process.env.DB_URL, { useNewUrlParser: true });

mongoose.connection.on('open', function(){
    console.log("Mongoose default connection is open to ", process.env.DB_URL)
});


server.listen(port, () => {
    console.log(`server running on port ${port}`)
});
Run Code Online (Sandbox Code Playgroud)

看起来DB_URL像这样:DB_URL=mongodb://localhost:27017/my-test-db

正如预期的那样,我得到的输出是 - Mongoose default connection is open to mongodb://localhost:27017/root-factory-db。但是,当我连接到 时,数据库从未显示在 GUI 上localhost:27017。据我了解,它没有任何数据。所以我进一步搜索,至少看看它是否列出了连接后的数据库。为此我尝试调整connection.on方法如下:

mongoose.connection.on('open', function(){
    console.log("Mongoose default connection is open to ", process.env.DB_URL)
    new Admin(mongoose.connection.db).listDatabases(function(err, result) {
        console.log('listDatabases succeeded');
        // database list stored in result.databases
        var allDatabases = result.databases;
        console.log('allDatabases: ', allDatabases)
    });
});
Run Code Online (Sandbox Code Playgroud)

执行此操作后,我可以从其他本地应用程序查看所有其他数据库,除了my-test-db我刚刚创建的数据库。它是否因为空而未显示在 GUI/编程方式上?上次我尝试使用 GUI(Robo 3T 和 Mongo Compass)时,它们都很好地显示了空数据库。有人可以在这里指出正确的方向吗?

编辑:还尝试show dbs从 mongo 终端。数据库也没有出现。

com*_*ich 5

如果其他人遇到这个问题,在进一步查找之后,我发现为了使数据库在 GUI 中正确显示,我必须在数据库中创建一些数据。我通过来自其中一个控制器的 POST 请求来做到这一点。只需在数据库中创建一个文档,数据库(以及集合)就可以在 GUI 中正常显示。