Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. import * as express from 'express';
  2. import Article from '../models/article';
  3. import { IArticle } from '../interfaces/article';
  4. import { Router, Request, Response } from "express";
  5. import User from '../models/user';
  6. import { IUser } from '../interfaces/user';
  7.  
  8. const router: Router = express.Router();
  9.  
  10. router.get('/', async (req: Request, res: Response) => {
  11. try {
  12. const offset: number = req.query.offset ? parseInt(req.query.offset) : 0;
  13. const limit: number = req.query.limit ? parseInt(req.query.limit) : 0;
  14. const filter: {[key: string]: any} = req.query.filter ? JSON.parse(req.query.filter) : {};
  15. const sort: {[key: string]: number} = (req.query.sort && req.query.order)
  16. ? {[req.query.sort]: req.query.order}
  17. : {};
  18.  
  19. const articles: IArticle[] = await Article
  20. .find(filter)
  21. .skip(offset)
  22. .limit(limit)
  23. .sort(sort)
  24. .populate({
  25. path: 'author',
  26. select: '-articles'
  27. });
  28.  
  29. if (articles.length === 0) {
  30. res.sendStatus(404);
  31. return;
  32. }
  33.  
  34. if (limit > 0) {
  35. //Content-Range: <unit> <range-start>-<range-end>/<size>
  36. const contenRangeHeader: string = 'articles ' + (offset + 1) + '-' + (offset + articles.length) + '/' + articles.length;
  37. res.setHeader('Content-Range', contenRangeHeader);
  38. }
  39.  
  40. res.json(articles);
  41. } catch (error) {
  42. res.status(500).json({ error });
  43. }
  44. });
  45.  
  46. // ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement