MongoDB GET请求不返回任何内容

罗斯·克拉斯纳

我在Amazon EC2实例上使用NodeJS + Forever运行MongoDB数据库。(可在https://github.com/WyattMufson/MongoDB-AWS-EC2上找到MongoDB和NodeJS代码)。我按照本教程在EC2实例上安装了Mongo:https : //docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

当我跑步时:

curl -H "Content-Type: application/json" -X POST -d '{"test":"field"}' http://localhost:3000/data

POST返回:

{
   "test": "field",
   "created_at": "2017-11-20T04:52:12.292Z",
   "_id": "5a125f7cead7a00d5a2593ec"
}

但是这个GET:

curl -X GET http://localhost:3000/data

返回:

[]

我的dbpath设置为/data/db/,运行它时没有权限问题。

为什么POST请求有效,但GET不起作用?

头盔

您正在使用的该Node应用存在很多问题和潜在问题。我想您可以根据最终要完成的工作,着手解决/更新这些问题或找到另一个示例MEAN应用程序。

明显的问题之一collectionDriver.js是没有正确地将错误传递回回调,而是传递null回了而不是错误。这出现在6个不同的位置,但特别是(根据示例POST)在此处的第46和47行:

the_collection.insert(obj, function() { //C
callback(null, obj);

应该是(有一些额外的控制台日志记录,可以很好地衡量):

the_collection.insert(obj, function(err, doc) { //C
console.error("insert error: %s", err.message);
callback(err, doc);

如果进行了这些更改,您几乎可以肯定会看到POST实际上返回了MongoError。然后,您可以继续查找并解决下一组问题。

其中一个错误/问题,你可能会发现的是,项目是使用真正的老版本的MongoDB的Node.js的驱动程序,你会发现可能这个错误,当你修复错误处理发现:

驱动程序与此服务器版本不兼容

由于需要更新API,以便在最新的2.x驱动程序中进行一些API更改,才能支持更多最新版本的MongoDB(例如3.2或3.4),因此需要进行更多修复。请参阅Node.js驱动程序兼容性

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章