我在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] 删除。
我来说两句