
Алексей
01.06.2018
16:32:32
Ребят. Ну пт жеж

Алексей
01.06.2018
16:33:53
а с этим никто не подскажет?
народ, не зазорно продакшн babel-node'ой запускать?
вроде где-то слышал, что это не ок, потому что просадки могут быть. хотя, по логике, просадка должна быть только на старте, что вообще не критично

Google

Alexander
01.06.2018
16:34:01

Roman
01.06.2018
16:34:51
В общем клиентская часть обращается на сервер REST API инпоинт, что бы забрать данные с БД. Перед тем, как брать данные с БД я хочу убедиться, что у этого пользователя есть необходимые права, т.е. добавил функцию мидлвар, которая проверяет наличие токена в заголовке, и если его нет или он не совпадает то возвращает на клиент статус ошибки, где я ее буду обрабатывать. Если токен правельный, тогда в мидлваре вызываю next() для обработки этого запроса. Но сейчас проблема в том, что если я отправляю с клиента запрос с токеном в headers, то мидлвар выкидывает ошибку при первом запросе. Если headers нет, то все нормально отрабатывает.

Alexander
01.06.2018
16:34:57
Лично я за чистоту запуска. Нода выполняется в одном месте, так что нет смысла транспайлить код на множество машин. Максимум что можно это прогнать перед запуском

Алексей
01.06.2018
16:35:10

Roman
01.06.2018
16:35:14
Проблема в headers, есть идеи как решить?

Alexander
01.06.2018
16:35:26
Придётся за новой бежать
И ловишь как?

Roman
01.06.2018
16:36:23
GET

Alexander
01.06.2018
16:36:55
Ловишь через app.get?

Алексей
01.06.2018
16:37:00

Roman
01.06.2018
16:37:14
app.use('/city', verifyToken);
app.get('/city', getCities);

Google

Алексей
01.06.2018
16:38:03
О а так легально?

Alexander
01.06.2018
16:38:03
app.get('/city', verifyToken, getCities) работает корректно?
Как обработчики событий
И без next в следующий не провалится

Roman
01.06.2018
16:44:25
Интересно, почему мой вариант не работает?
Я так сделал так потому, что бы на любые методы запросов(GET, POST, PUT, DELETE) на REST API '/city' производилась проверка токена пользователя. И тем самым не дублировать код.
Т.е. получается сейчас мне нужно писать так
app.get('/city', verifyToken, getCities)
app.post('/city', verifyToken, createCities)
app.put('/city', verifyToken, updateCities)
app.delete('/city', verifyToken, deleteCities)

Yaroslav
01.06.2018
16:50:26

Roman
01.06.2018
16:51:37
Можно all использовать или use
Я вот так писал, и оно почему-то не работало так как нужно:
app.use('/city', verifyToken);
app.post('/city', createCities)
app.put('/city', updateCities)
app.delete('/city', deleteCities)

Yaroslav
01.06.2018
16:52:08
Use для этого и был создан
Еще есть all для всех crud запросов

Roman
01.06.2018
16:58:47
app.use(verifyToken);
app.get('/city', getCities);
Корректно работает только так
app.get('/city', verifyToken, getCities)

Yaroslav
01.06.2018
16:59:49

Roman
01.06.2018
17:01:14

Yaroslav
01.06.2018
17:01:40

Google

Yaroslav
01.06.2018
17:01:45
Это отдельный запрос
Fave icon

Roman
01.06.2018
17:02:13
Просто я токен передаю в headers и хочу его проверять, и если его нет, отдавать ошибку на клиент, и обрабатывать ошибку так
Fave icon
А его можно как-то игнорировать в мидлваре?

Yaroslav
01.06.2018
17:02:42
Да.
Почитайте в нете

A.
01.06.2018
17:03:04
Лучше на Gist

Roman
01.06.2018
17:08:27

Yaroslav
01.06.2018
17:19:34

Alexander
01.06.2018
17:20:01
во

Yaroslav
01.06.2018
17:20:15
что за req: express.Request - и потом юзает req и при этом, это работает
?

Roman
01.06.2018
17:20:32
Это тайпскрипт

Alexander
01.06.2018
17:21:10
земля пухом

Yaroslav
01.06.2018
17:21:43
1. зачем тс на серве
2. логичней проверять на соответсвие правильному значению
ибо у тебя сейчас просто любая запись проходит

Google

Kendr
01.06.2018
17:22:44

Yaroslav
01.06.2018
17:22:48
3. ты уверен, что req.get возвращает

Roman
01.06.2018
17:22:51

Yaroslav
01.06.2018
17:23:06
Ради типов?
ага. видел я реальные, большие проекты. везде тип any
отличные типы

Alexander
01.06.2018
17:23:11
зачем сервер вообще?
зачем?

Yaroslav
01.06.2018
17:23:26
*о серверной части - ФО норм

Alexander
01.06.2018
17:23:28
?

Yaroslav
01.06.2018
17:23:59

Morsik
01.06.2018
17:24:20

Yaroslav
01.06.2018
17:24:31
ибо я не понял

Roman
01.06.2018
17:24:44

Morsik
01.06.2018
17:24:49

Yaroslav
01.06.2018
17:25:04
любая орм приобразует
а кроме этого. хз, где проблемы

Morsik
01.06.2018
17:25:36
в одном месте строка передается в другом месте обьект принимается

Google

Yaroslav
01.06.2018
17:25:44
и?

Morsik
01.06.2018
17:25:50
очевидный баг

Yaroslav
01.06.2018
17:25:53
не делайте, что б так было
или у вас имя data - значение примитив?
я хз, как такое допускать
да бывает, но в основном при request с фронта
учитывая, что везде const стараються лепить и что такого критическо-зависимого от типов может быть?

Morsik
01.06.2018
17:30:39

Roman
01.06.2018
17:32:00

Yaroslav
01.06.2018
17:32:30
я хз, по названию переменных понятно, что там. с учетом норм кода, там не должно быть проблем особых
может я еще не видел просто плохих проектов

Roman
01.06.2018
17:33:59
К тому же есть можно создавать абстрактные классы, интерфейсы и енамы

Yaroslav
01.06.2018
17:34:10
и зачем они в js?

Roman
01.06.2018
17:34:39
и зачем они в js?
В JS они не нужны, а вот при разработке иногда очень полезны и удобны

Yaroslav
01.06.2018
17:35:14
попробуйте так.
function verifyToken(req, res, next) {
if (req.get('token') !== validValue) {
return res.sendStatus(401);
}
next()
}