为什么我可以在不运行本地mongo服务器的情况下访问mongodb?

时间:2018-01-15 17:52:13

标签: node.js mongodb mongoose

我开始通过在线课程进行服务器端编程。根据我的理解,我们使用mongoose.connect(url)连接到mongodb,其中url可以是运行mongodb服务器的localhost url

但最近我忘了使用mongod运行本地mongodb服务器。当我使用以下代码运行我的节点应用程序时,它运行得很好:

var mongoose = require('mongoose');


mongoose.Promise = global.Promise;

mongoose.connect(process.env.MONGO_URL || 'mongodb://localhost:27017/TodoApp');

const {Todo} = require('./../server/models/todos');
const {ObjectID} = require('mongodb');


Todo.remove({}).then((result)=>{
  console.log(result);
});

即使mongodb服务器没有运行,它也没有错误。当我使用Robo-3T tool检查本地数据库时,documents被删除了。我已经再次验证了这一点。

我无法理解为什么我的节点应用能够连接到mongodb://localhost:27017/TodoApp,即使mongodb服务器没有在localhost:27017.上运行另外,为什么Robo-3T工具能够连接到localhost: 27017 1}}如果服务器没有运行。

感谢。

4 个答案:

答案 0 :(得分:2)

The mongodb server was already running. Looks like the server does not shuts down on closing the terminal. It still runs in background. We have to close it using Ctrl+C.

More info: mongodb doesn't stop when I close terminal

Thanks @Sergio Tulentsev.

答案 1 :(得分:1)

另一个原因是MongoDB服务器作为服务在后台中运行。即使您重新启动计算机,它也可能正在运行。

我认识到我的胜利10,MongoDB服务器会自动启动。因此,您无需在本地运行mongod。

在10获胜时,您可以通过以下方式进行检查:

  1. 在搜索框中键入服务;
  2. 打开“服务”窗口;
  3. 在列表中找到MongoDB服务器;
  4. 检查启动类型。

可能您的启动类型是“自动”,您可以在此处更改MongoDB Server的启动类型。

答案 2 :(得分:1)

原因很简单,该进程在后台运行。如果您搜索“服务”-(在Windows中),向下滚动以检查是否有MongoDb,您将看到该进程正在运行(已启动)。如果设置为“自动”,则即使每次重新启动也会启动。

答案 3 :(得分:0)

它发生在您没有明确停止服务器并关闭终端的情况下。服务器在后台运行,您也可以在任务管理器中看到它。按Ctrl + C退出,它将停止您的服务器。