在insert hook中获取gridfs文件

时间:2016-11-25 16:26:37

标签: python eve

我正在使用eve制作文件索引服务。

我的所有藏品都属于以下类型:

DOMAIN = {
"file_collection" : {
    ...
    'schema' : {
        'file': {'type': 'media'},
        'meta': {'type': 'dict',
            schema: {...whatever it is I want to index...}
            }
        }
    }, 
}

我想使用on_insert挂钩打开文件,提取一些数据并填充此文档的元字典。

我无法在前夕应用程序对象中访问或查找任何gridFS对象:如何访问文档内容?

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,这是我在后续研究中学到的:

from eve import Eve
from flask import current_app 
from eve.io.mongo.media import GridFSMediaStorage


def file_collection_on_insert(documents):
    gridfs = GridFSMediaStorage(app=current_app)
    #do something with gridfs: eg: gridfs.get(file_id)

app = Eve()
app.on_insert += file_collection_on_insert
app.run()

===================

编辑:

活动更快捷,更轻松地访问媒体:

from flask import current_app as app

def file_collection_on_insert(documents):
    #get the file_id
    app.media.get(file_id)

瞧!