【发布时间】:2019-01-13 23:41:43
【问题描述】:
我是第一次使用 nodeJS,我正在尝试做一个通过 Mongoose 连接到 MongoDB 的应用程序。
我已经成功安装了 MongoDB、NodeJS 和 Mongoose(通过 npm)。
我的问题是: 当我通过猫鼬连接我的节点应用程序时没有显示任何错误,但是当我尝试插入一个文档时,它根本没有做任何事情。在保存线处冻结。
这是我的代码
var express = require('express');
var app = express();
var mongoose = require('mongoose');
...
mongoose.connect('mongodb://127.0.0.1:27017/exampleDB');
mongoose.Promise = global.Promise;
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
var someModel = mongoose.model('someModel', {
name : String
});
app.get('/api/todos', function(req, res) {
var awesome_instance = new someModel({ name: 'awesome' });
console.log("about to save the document");
awesome_instance.save(function (err) {
if (err) return handleError(err);
});
});
app.post('/api/todos', function(req, res) {
});
...
app.listen(8080);
console.log("App listening on port 8080");
使用 mongo 客户端,我可以看到我的数据库,但看不到代码应该创建的集合。我的 mongoDB 也检测到来自 nodeJS 的连接。我只是不知道会发生什么。
这就是我的 server.js(节点)显示的内容
$ node server.js
App listening on port 8080
about to save the document
GET /api/todos - - ms - -
这是我的 mongo 客户端
$ ./mongo
MongoDB shell version v4.0.0
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.0
use exampleDB
switched to db exampleDB
show collections
exampleCollection
非常感谢。
【问题讨论】:
-
我只用你的模型和保存方法测试了你在一个简单的 node.js 应用程序上尝试做的事情。工作没有问题。创建集合并保存。但是我没有使用 express,所以这可能是问题所在。
-
您的代码在我的机器上运行良好。它保存了文档没有任何问题。所以请检查你的节点模块和机器环境。
-
哦,那很混乱。 Windows 是否有可能阻止 Mongo 27017 端口?我检查了安全性,找不到任何东西。我也试过没有快递,是的,也做了同样的事情。您是否将 Mongo 社区安装为服务?