我无法使用 Mongoose 在 MongoDB 中保存或查找文档
Posted
技术标签:
【中文标题】我无法使用 Mongoose 在 MongoDB 中保存或查找文档【英文标题】:I can't save or find a document into MongoDB using Mongoose 【发布时间】: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 社区安装为服务? 【参考方案1】:让你的get
看看它是否有效。
var express = require('express');
var app = express();
var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/exampleDB', useNewUrlParser: true );
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', async function(req, res)
var awesome_instance = new someModel( name: 'awesome' );
await awesome_instance.save()
);
app.post('/api/todos', function(req, res)
);
app.listen(8080, ()=>console.log("App listening on port 8080"));
【讨论】:
我试过了,谢谢你的建议。它完全一样。我认为与数据库更相关。如果我在 .save() 方法之后记录某些内容,它会正确记录。以上是关于我无法使用 Mongoose 在 MongoDB 中保存或查找文档的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 express/mongoose/angularjs 从 Mongodb 访问数据
无法使用 mongoose 连接到 Mongodb Atlas