def list(self, request):
await require(request, Permissions.view)
possible_fields = [k.name for k in self._schema.keys]
q = validate_query(request.GET, possible_fields)
paging = calc_pagination(q, self._primary_key)
filters = q.get('_filters')
query = {}
if filters:
query = create_filter(filters, self._schema)
sort_direction = ASCENDING if paging.sort_dir == ASC else DESCENDING
cursor = (self._collection.find(query)
.skip(paging.offset)
.limit(paging.limit)
.sort(paging.sort_field, sort_direction))
entities = await cursor.to_list(paging.limit)
count = await self._collection.find(query).count()
headers = {'X-Total-Count': str(count)}
return json_response(entities, headers=headers)
评论列表
文章目录