【问题标题】:Mongoose - database not showing up on GUI despite establishing connectionMongoose - 尽管建立了连接,但数据库没有显示在 GUI 上
【发布时间】:2019-09-16 10:56:00
【问题描述】:

我正在从头开始编写一个简单的快递应用程序。我已经使用猫鼬建立了一个数据库连接。我现在想要实现的只是让数据库显示在 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}`)
});

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

正如预期的那样,我得到的输出是 - Mongoose default connection is open to mongodb://localhost:27017/root-factory-db。但是,当我连接到localhost:27017 时,数据库永远不会出现在 GUI 上。我知道它没有任何数据。所以我进一步搜索至少看看它是否在连接后列出了数据库。为此,我尝试如下调整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)
    });
});

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

编辑:也在 mongo 终端尝试show dbs。 db 也没有出现在上面。

【问题讨论】:

    标签: database mongodb express mongoose


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-05-25
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 1970-01-01
      • 2020-03-14
      • 2019-09-28
      • 2018-05-21
      • 1970-01-01
      相关资源
      最近更新 更多