Python Eve: добавьте значение _id в поле auth_field с обработчиком событий - PullRequest
0 голосов
/ 30 мая 2018

У меня есть конечная точка регистрации, где для запросов POST аутентификация не требуется, поэтому в коллекцию mongodb также не добавляется AUTH_FIELD при создании учетной записи.

Поскольку мне нужен доступ к ресурсам, ограниченным пользователем, также дляВ этой конечной точке я пытаюсь добавить поле с перехватом после события:

AUTH_FIELD = 'user_id'

def adduserid(request, payload):
  data = json.loads(payload.get_data().decode('utf-8'))
  setid = data['_id']
  app.data.driver.db['accounts'].update({"username" : username},{"$set": {"user_id": setid}})

app.on_post_POST_accounts += adduserid

В результате я получаю KeyError:

File "run.py", line 30, in adduserid
setid = data['_id']
KeyError: '_id'

У меня такое ощущение, что я неправильно анализирую этот объект полезной нагрузки, но я не знаю, что не так.Может быть, есть более простой способ сделать это вообще?

1 Ответ

0 голосов
/ 01 июня 2018

Поле _id не является частью полезной нагрузки, но у вас будет доступ к нему, если вы используете ловушку базы данных on_inserted_<resource_name>, так как eve добавляет _id перед выполнением вставки базы данных.Документация здесь (http://python -eve.org / features.html # database-event-hooks )

...