我只是想使用Serverless和Lambda向Atlas集群发出获取和发布请求。我遵循了下面所有非常相似的教程:
https://hackernoon.com/building-a-serverless-rest-api-with-node-js-and-mongodb-2e0ed0638f47
https://dev.to/adnanrahic/a-crash-course-on-serverless-apis-with-express-and-mongodb-193k
https://dev.to/saigowthamr/build-and-deploy-a-rest-api--using-serverless-express-and-nodejs-3331
https://blog.eduonix.com/web-programming-tutorials/serverless-development-nodejs-aws-lambda/?unapproved=84149&审核散列=9ac99ba21b72d6be12fbb14c1005a540#comment-84149
使用Insomnia或Postman,我可以向本地托管的数据库发出获取和发布请求,但不能向Atlas集群发出请求。请求总是导致502坏网关,JSON消息为"内部服务器错误"。我试过将集群主机从AWS切换到Azure,但没有帮助。关于各种驱动程序,我已经尝试了各种各样的连接字符串。我已经将所有ip列入白名单,所以访问不是问题。请帮忙。
我删除了Atlas帐户中的集群、项目、组织和用户,然后重新开始。我没有通过"网络访问"选项卡手动创建新用户,而是在创建集群时使用提示创建了一个用户。我注意到在连接时有一条关于特殊字符的注释:
输入密码时,请确保所有特殊字符都是URL编码的
我以前的密码使用了@符号,这可能导致了问题。因此,使用电子邮件地址作为用户名时要小心。我像往常一样给用户分配了0.0.0.0/0。我认为这无关紧要,但我只有一个用户,我也给那个用户添加了一条评论。现在我可以使用2.2.12或更高版本的Node.js驱动程序连接字符串进行连接。我希望这能帮助到别人。