2016-11-25 1 views
0

Я делаю службу индексирования файлов с помощью eve.получение файла gridfs в крючке вставки

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

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

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

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

Спасибо!

ответ

0

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

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() 

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

Edit:

Event быстрее и более легкий доступ к средствам массовой информации:

from flask import current_app as app 

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

Вуаля!

Смежные вопросы