我刚刚开始使用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
find_one_raw
始终返回“无”。我想我必须转换id参数? (我使用的是本地MongoDB ObjectId)save_raw
答案 0 :(得分:0)
1:
type
碰巧是python关键字。你的意思是说resource_type
吗?
2:app.data.insert
(创建新)或app.data.update
(更新现有版本)
3:显然mongodb中没有交易从this线程中显而易见(正如你所知,我自己是mongodb的新手)