codecombat/server/middleware/files.coffee

21 lines
No EOL
762 B
CoffeeScript

utils = require '../lib/utils'
errors = require '../commons/errors'
wrap = require 'co-express'
Grid = require 'gridfs-stream'
Promise = require 'bluebird'
database = require '../commons/database'
module.exports =
files: (Model, options={}) -> wrap (req, res) ->
doc = yield database.getDocFromHandle(req, Model)
if not doc
throw new errors.NotFound('Document not found.')
module = options.module or req.path[4..].split('/')[0]
query = { 'metadata.path': "db/#{module}/#{doc.id}" }
c = Grid.gfs.collection('media')
c.findAsync = Promise.promisify(c.find)
cursor = yield c.findAsync(query)
cursor.toArrayAsync = Promise.promisify(cursor.toArray)
files = yield cursor.toArrayAsync()
res.status(200).send(files)