Você não precisa necessariamente do GridFS para armazenar arquivos no MongoDB, mas certamente torna a experiência mais agradável, porque lida com a divisão e o salvamento dos dados binários, ao mesmo tempo em que disponibiliza os metadados. Você pode então armazenar um ID em seu
User
documento para a imagem do avatar. Além disso, você também pode armazenar dados binários diretamente em seus documentos, embora em seu código você não esteja salvando os dados. Você simplesmente está abrindo com
PIL.Image
, mas depois não fazer nada com ele. Supondo que você esteja usando
pymongo
para o seu driver, acho que o que você pode fazer é apenas envolver os dados binários em um Binary
recipiente e, em seguida, armazená-lo. Isso não foi testado por mim, mas suponho que deve funcionar:from pymongo.binary import Binary
binary_avatar = Binary(avat)
user={
...
"avatar":avatar,
"avatar_file": binary_avatar
...
}
Agora que está dito... apenas facilite para você e use o GridFS. É para isso que se destina.
Se você fosse usar o GridFS, ficaria assim:
from gridfs import GridFS
avat_ctype = self.request.files['avatar'][0]["content_type"]
fs = GridFS(db)
avatar_id = fs.put(avat, content_type=avat_ctype, filename=nomfich)
user={
...
"avatar_name":avatar,
"avatar_id": avatar_id
...
}