find_and_modify 使用 Python-EVE 更新插入
find_and_modify with upsert using Python-EVE
当您需要更新或插入时,有一个常见的用例。例如:
obj = db['data'].find_and_modify(
{
'Name': data['Name'],
'SourcePage': data['SourcePage'],
},
data,
upsert=True
)
当然可以将此请求拆分为 GET
然后 PATCH
或 INSERT
但也许有更好的方法?
P.S。 eve 提供了一些不错的功能,例如文档版本和元数据(_created、_updated 等)
upsert
支持现在是 upcoming release 的一部分。
不需要做任何不同的事情。该功能默认为 "turned on"。因此,如果用户尝试 PUT
一个不存在的项目,则会创建一个新项目。负载中发送的 id
字段被忽略。
如果用户不想要这个功能,用户需要明确设置UPSERT_ON_PUT
到False
。现在,用户恢复了 "old" 行为。即当用户尝试 PUT
不存在的项目时,返回 404
。
当您需要更新或插入时,有一个常见的用例。例如:
obj = db['data'].find_and_modify(
{
'Name': data['Name'],
'SourcePage': data['SourcePage'],
},
data,
upsert=True
)
当然可以将此请求拆分为 GET
然后 PATCH
或 INSERT
但也许有更好的方法?
P.S。 eve 提供了一些不错的功能,例如文档版本和元数据(_created、_updated 等)
upsert
支持现在是 upcoming release 的一部分。
不需要做任何不同的事情。该功能默认为 "turned on"。因此,如果用户尝试 PUT
一个不存在的项目,则会创建一个新项目。负载中发送的 id
字段被忽略。
如果用户不想要这个功能,用户需要明确设置UPSERT_ON_PUT
到False
。现在,用户恢复了 "old" 行为。即当用户尝试 PUT
不存在的项目时,返回 404
。