Получение файла gridfs в хуке вставки

Я делаю сервис индексации файлов, используя канун.

Все мои коллекции имеют тип:

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

Я хотел бы использовать ловушку on_insert, чтобы открыть файл, извлечь некоторые данные и заполнить мета-словарь этого документа.

Мне не удалось получить доступ или найти какой-либо объект gridFS в объекте приложения eve: как я могу получить доступ к содержимому документа?

Спасибо!

1 ответ

Решение

Хорошо, это то, что я узнал во время моего последующего исследования:

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)

Вуаля!

Другие вопросы по тегам