使用 Atlas、Mongoose 和 Lambda 的 502 Bad Gateway

502 Bad Gateway using Atlas, Mongoose, and Lambda

我只是想使用无服务器和 Lambda 向我的 Atlas 集群发出 get 和 post 请求。我已经学习了下面所有非常相似的教程:

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&moderation-hash=9ac99ba21b72d6be12fbb14c1005a540#comment-84149

使用 Insomnia 或 Postman,我可以向本地托管的数据库发出 get 和 post 请求,但不能向 Atlas 集群发出请求。请求总是导致 502 Bad Gateway 和 "internal server error" 的 JSON 消息。我试过将集群主机从 AWS 切换到 Azure,但没有用。关于各种驱动程序,我尝试了各种连接字符串。我已将所有 ip 列入白名单,因此访问不是问题。请帮忙。

我删除了我的 Atlas 帐户中的集群、项目、组织和用户,然后重新开始。我没有通过“网络访问”选项卡手动创建新用户,而是使用创建集群时收到的提示创建了一个用户。我注意到在建立连接时有一个关于特殊字符的注释:

输入密码时,请确保所有特殊字符都经过 URL 编码。

我以前的密码使用了 @ 符号,这可能会导致问题。所以在使用电子邮件地址作为用户名时要小心。我像往常一样将 0.0.0.0/0 分配给用户。我认为这不重要,但我只有一个用户,我也向该用户添加了评论。现在我可以使用 2.2.12 或更高版本 Node.js 驱动程序连接字符串进行连接。我希望这对某人有所帮助。