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 然后 PATCHINSERT 但也许有更好的方法?

P.S。 eve 提供了一些不错的功能,例如文档版本和元数据(_created、_updated 等)

upsert 支持现在是 upcoming release 的一部分。

不需要做任何不同的事情。该功能默认为 "turned on"。因此,如果用户尝试 PUT 一个不存在的项目,则会创建一个新项目。负载中发送的 id 字段被忽略。

如果用户不想要这个功能,用户需要明确设置UPSERT_ON_PUTFalse。现在,用户恢复了 "old" 行为。即当用户尝试 PUT 不存在的项目时,返回 404