Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Рубрика: node.js

express.js роутер с регулярными выражениями

Posted on 8 июня, 2019 by admin

Ты можешь создать экспресс роутер что будет обрабатывать несколько страниц portfolio, projects, reviews, используя такую структуру как показано ниже

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
const express = require('express');
const router = express.Router();
 
const DB = require('../../core/my_db/DB.js')
 
 
 
// # 1
/* /api/v1/users/:login/portfolio/?user&portfolio */
router.get(/\/(.*)\/(portfolio|projects|reviews)/, function(req, res, next) {
  let login = req.params[0]
  
  const getUser = (login) => {
    return new Promise((resolve, reject) => {
      DB.pool.query(
        `SELECT *
         FROM `users`
         WHERE login = ?`,
        [login],
        (err, r) => {
          if (err) throw err
          if (r.length === 1) {
            delete r[0].pass
            return resolve({ user: r[0] })
          }
          return reject({ error: "notFound" })
        }
      )
    })
  }
 
  const getPortfolio = (login) => {
    return new Promise((resolve, reject) => {
      DB.pool.query(
        `SELECT p.*
         FROM `users` u
         INNER JOIN `portfolios` p
         ON p.userId = u.id AND u.login = ?`,
        [login],
        (err, r) => {
          if (err) throw err
          resolve({ portfolios: r })
        }
      )
    })
  }
 
  const getProjects = (login) => {
    return new Promise((resolve, reject) => {
      DB.pool.query(
        `SELECT p.*
        FROM `users` u
        INNER JOIN `projects` p
        ON p.userId = u.id AND u.login = ?`,
        [login],
        (err, r) => {
          if (err) throw err
          resolve({ projects: r })
        }
      )
    })
  }
 
  const getReviews = (login) => {
    return new Promise((resolve, reject) => {
      DB.pool.query(
        `SELECT r.*,
            u2.id as u2_id,
            u2.login,
            u2.avatar,
            u2.firstName,
            u2.secondName
        FROM `users` u
        INNER JOIN `reviews` r
        ON r.userId = u.id AND u.login = ?
        INNER JOIN `users` u2
        ON r.authorId = u2.id`,
        [login],
        (err, r) => {
          if (err) throw err
          resolve({ reviews: r })
        }
      )
    })
  }
 
  
 
  let requests = []
  console.log('req.query = ', req.query);
 
  if (req.query.hasOwnProperty('user')) {
    requests.push(getUser(login))
  }
 
  if (req.query.hasOwnProperty('portfolio')) {
    requests.push(getPortfolio(login))
  }
 
  if (req.query.hasOwnProperty('projects')) {
    requests.push(getProjects(login))
  }
 
  if (req.query.hasOwnProperty('reviews')) {
    requests.push(getReviews(login))
  }
  
  
  
 
  
 
  Promise.all(requests)
    .then(values => {
      console.log(values); // [3, 1337, "foo"]
      res.json(values)
    })
    .catch(err => {
      res.json(err)
    })
  
  
});
 
 
 
// # 2
/* /api/v1/users/:login/projects/ */
router.get('/:login/projects/', function(req, res, next) {
  res.json({ hello:'world' })
})
 
module.exports = router;

  Это очень важно, строка что определяет регулярное выражение должно быть js регулярное выражение. Не строка!

1
router.get(/\/(.*)\/(portfolio|projects|reviews)/, function(req, res, next) {

   

Read more
jwt authentication with passport.js

Как использовать JWT с passportjs

Posted on 18 мая, 201918 мая, 2019 by admin

#Содержание: Введение Установка Создаем authentication router Реализация JWT protected router Test JWT authentication и authorization Выводы Несколько слов об https и http Все файлы /routers/auth.js, /routers/users.js, /app/passport.js and app.js Ресурсы   #Введение JWT это json web token. Он используется для authentication между сервером и клиентом. Реализовать его в node.js мы будем использовать следующие модули: passport…

Read more

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (29)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • admin к записи Как удалить изображение из google
  • Shakanris к записи Программка для заполнения форума на vBulletin 3.8.7
  • костя к записи visual C++, создание диалоговых окон.
  • Татьяна к записи Как удалить изображение из google
©2021 Kselax.ru Theme by ThemeGiant