Advertisement
Guest User

Untitled

a guest
Dec 10th, 2019
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const path = require('path');
  2. const router = require('express').Router();
  3. const fsp = require('fs').promises;
  4.  
  5. async function getUsers() {
  6.   const pathToFile = path.join(__dirname, '../data/users.json');
  7.  
  8.   return fsp.readFile(pathToFile, 'utf8')
  9.     // Обращаю внимание, что try/catch в данном случае не нужен, т.к. промисы
  10.     // под капотом содержат обработку ошибок, и если в JSON.parse что-то пойдет
  11.     // не так промис просто заREJECTится.
  12.     .then((data) => [JSON.parse(data), null])
  13.     .catch((err) => [null, err]);
  14. }
  15.  
  16. router.get('/', async (req, res) => {
  17.   // Деструктуризация массива
  18.   const [users, error] = await getUsers();
  19.  
  20.   if (error) {
  21.     // Можно отправлять разные сообщения в зависимости от error.code
  22.     return res.status(500).json({ message: 'Что-то пошло не так' });
  23.   }
  24.   return res.json(users);
  25. });
  26.  
  27. router.get('/:id', async (req, res) => {
  28.   const { id } = req.params;
  29.   const [users, error] = await getUsers();
  30.  
  31.   if (error) {
  32.     return res.status(500).json({ message: 'Что-то пошло не так' });
  33.   }
  34.   for (let i = 0; i < users.length; i += 1) {
  35.     // eslint-disable-next-line no-underscore-dangle
  36.     if (users[i]._id === id) {
  37.       return res.json(users[i]);
  38.     }
  39.   }
  40.   return res.status(404).json({ message: 'Нет пользователя с таким id' });
  41. });
  42.  
  43. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement