0

每次我尝试使用邮递员测试我的注册 Api 时,我都会收到内部服务器错误作为返回的错误消息,而在我的终端上我会收到此错误

 [2020-01-05 07:14:52,933] ERROR in app: Exception on /register [POST]
web_1  | Traceback (most recent call last):
web_1  |   File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1949, in full_dispatch_request
web_1  |     rv = self.dispatch_request()
web_1  |   File "/usr/local/lib/python3.8/site-packages/flask/app.py", line 1935, in dispatch_request
web_1  |     return self.view_functions[rule.endpoint](**req.view_args)
web_1  |   File "/usr/local/lib/python3.8/site-packages/flask_restful/__init__.py", line 458, in wrapper
web_1  |     resp = resource(*args, **kwargs)
web_1  |   File "/usr/local/lib/python3.8/site-packages/flask/views.py", line 89, in view
web_1  |     return self.dispatch_request(*args, **kwargs)
web_1  |   File "/usr/local/lib/python3.8/site-packages/flask_restful/__init__.py", line 573, in dispatch_request
web_1  |     resp = meth(*args, **kwargs)
web_1  |   File "app.py", line 99, in post
web_1  |     if UserExist(username):
web_1  |   File "app.py", line 20, in UserExist
web_1  |     count =  db.users.count_documents({"Username": username})
web_1  |   File "/usr/local/lib/python3.8/site-packages/pymongo/collection.py", line 1720, in count_documents
web_1  |     return self.__database.client._retryable_read(
web_1  |   File "/usr/local/lib/python3.8/site-packages/pymongo/mongo_client.py", line 1453, in _retryable_read
web_1  |     server = self._select_server(
web_1  |   File "/usr/local/lib/python3.8/site-packages/pymongo/mongo_client.py", line 1253, in _select_server
web_1  |     server = topology.select_server(server_selector)
web_1  |   File "/usr/local/lib/python3.8/site-packages/pymongo/topology.py", line 233, in select_server
web_1  |     return random.choice(self.select_servers(selector,
web_1  |   File "/usr/local/lib/python3.8/site-packages/pymongo/topology.py", line 192, in select_servers
web_1  |     server_descriptions = self._select_servers_loop(
web_1  |   File "/usr/local/lib/python3.8/site-packages/pymongo/topology.py", line 208, in _select_servers_loop
web_1  |     raise ServerSelectionTimeoutError(
web_1  | pymongo.errors.ServerSelectionTimeoutError: :27017: [Errno -2] Name or service not known
web_1  | 172.20.0.1 - - [05/Jan/2020 07:14:52] "POST /register HTTP/1.1" 500 -

以下是我的注册和用户检查代码

class Register(Resource):
    def post(self):
        postedData = request.get_json()
        username = postedData["username"]
        password = postedData["password"]

        if UserExist(username):
            retJson = {
                "status code": 301,
                "message": "Invalid username"
            }
            return jsonify(retJson)
        hashed_pw = bcrypt.hashpw(password.encode('utf8'), bcrypt.gensalt())
        users.inser({
            "Username": username,
            "Password": hashed_pw
        })
        retJson = {
            "status code": 200,
            "message": "successfully registered"
        }

        return jsonify(retJson)

def UserExist(username):
    count =  db.users.count_documents({"Username": username})
    if count <= 0:
        return False
    else:
        return True

我已经尝试了所有我能想到的技巧,请知道什么是错的以及如何解决这个问题,谢谢。

4

1 回答 1

0

您的问题与 MongoClient 连接有关;你有:

MongoClient("mongodb://:27017")

我建议它需要是:

MongoClient("mongodb://localhost:27017")
于 2020-01-06T13:48:36.490 回答