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