Python Eve:使用事件挂钩在auth_field中添加_id值

时间:2018-05-30 15:48:41

标签: python eve

我有一个注册端点,其中POST请求不需要身份验证,因此在创建帐户时也不会向mongodb集合添加AUTH_FIELD。

由于我还需要对此端点进行用户限制的资源访问,我正在尝试使用post事件挂钩添加该字段:

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 :(得分:1)

someMethod(list.toArray(new Integer[list.size()]); 字段不是有效负载的一部分,但如果您使用_id数据库挂钩,则可以访问它,因为在插入数据库之前,eve会添加on_inserted_<resource_name>。这里的文档(http://python-eve.org/features.html#database-event-hooks