Получение файла 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)
Вуаля!