Python Eve:添加自定义路线,手动更改对象

时间:2015-06-26 09:09:57

标签: python mongodb rest flask eve

我刚刚开始使用Eve,它非常适合快速获得完整的REST API。但是,我并不完全相信REST在所有情况下都是完美的,例如我想要一个简单的upvote路线,我可以增加一个物体的计数器。如果我手动检索对象,增加计数器并更新它,我很容易遇到不同步的问题。所以我想添加一个简单的额外路由,例如/ resource / upvote将upvote计数增加1并返回对象。

我不知道" hacky"这是,所以如果它超过顶部,请告诉我。我没有看到为一些重要任务设置自定义路由的问题,这些任务在RESTful方式中要做太多工作。我知道我可以将upvotes视为自己的资源,但是嘿,我认为我们正在做MongoDB,所以不要过分关系。

所以这就是我所得到的:

@app.route('/api/upvote/<type>/<id>')
def upvote(type, id):
    obj = app.data.find_one_raw(type, id)
    obj['score'] += 1
  • 问题#1 find_one_raw始终返回“无”。我想我必须转换id参数? (我使用的是本地MongoDB ObjectId)
  • 问题#2 如何保存对象?我没有看到像save_raw
  • 这样简单易用的方法
  • 问题#3 我们可以在事务或类似事件中包装整个事物以确保它的线程安全吗? (我也是MongoDB的新手)。

1 个答案:

答案 0 :(得分:0)

1: type碰巧是python关键字。你的意思是说resource_type吗?

2:app.data.insert(创建新)或app.data.update(更新现有版本)

3:显然mongodb中没有交易从this线程中显而易见(正如你所知,我自己是mongodb的新手)