Python Eve:使用事件挂钩在 auth_field 中添加 _id 值
Python Eve: Add _id value in auth_field with event hook
我有一个注册端点,其中 POST 请求不需要身份验证,因此在创建帐户时也没有 AUTH_FIELD 添加到 mongodb 集合。
由于我还需要此端点的用户限制资源访问权限,因此我尝试使用 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'
我感觉我以错误的方式解析了这个有效负载对象,但我不知道哪里出了问题。
也许有更简单的方法来做到这一点?
_id
字段不是负载的一部分,但如果您使用 on_inserted_<resource_name>
数据库挂钩,您将可以访问它,因为 eve 在创建数据库之前添加了 _id
插入。文档在这里 (http://python-eve.org/features.html#database-event-hooks)
我有一个注册端点,其中 POST 请求不需要身份验证,因此在创建帐户时也没有 AUTH_FIELD 添加到 mongodb 集合。
由于我还需要此端点的用户限制资源访问权限,因此我尝试使用 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'
我感觉我以错误的方式解析了这个有效负载对象,但我不知道哪里出了问题。 也许有更简单的方法来做到这一点?
_id
字段不是负载的一部分,但如果您使用 on_inserted_<resource_name>
数据库挂钩,您将可以访问它,因为 eve 在创建数据库之前添加了 _id
插入。文档在这里 (http://python-eve.org/features.html#database-event-hooks)