
Dmitrii
21.04.2018
11:55:12
если мне не изменяет память для serve надо делать url rewrite
либо использовать koa-mount вместо koa-router

Дмитрий
21.04.2018
11:56:43
А, да
У меня сейчас какое-то такое жуткое комбо было, но уже поменял

Yan?
21.04.2018
11:58:38
Коа маунт это конечно элемент трешатины там при миграции 1 -> 2 я думал он отвалится

Google

Kirill
21.04.2018
12:34:16
посоны, помогите
Нужно отправить гет запрос с телеграм бота на node-telegram-bot-api на сервак на экспрессе с корсом. Проблема в том, что в вайтлист корса нужно добавить хост, а хоста как такового у бота и нет. Шо делать?

Никита
21.04.2018
13:02:10
Корс для браузера
Ничего не помешает из либы слать запросы
Если сервера вне РФ, ахаха

Kirill
21.04.2018
13:03:41
ггг
но корс экспрессовский не пускает

Никита
21.04.2018
13:05:07
Что значит корс не пускает?

Noname
21.04.2018
13:05:57

Kirill
21.04.2018
13:06:44
ну я такую конструкцию вроде из доков спер

Noname
21.04.2018
13:06:57
ну ок

Kirill
21.04.2018
13:07:19
потому и не пускает

Google

Noname
21.04.2018
13:07:26
Как ты понял, что проблема именно в корсе?
Попробуй нагло отключить))0

Kirill
21.04.2018
13:08:12
ну те хосты, что в вайтлисте, забирают норм

Noname
21.04.2018
13:08:23
Просто корс , не влияет на общение бота с нодой ну никак
Хотя да, у тебя высыпает ошибку

Kirill
21.04.2018
13:09:53
но вообще, все уже решилось путем дебага консоль логом

Никита
21.04.2018
13:09:59

Noname
21.04.2018
13:10:05
В телеге должен быть указан диапазон их айпи

Никита
21.04.2018
13:10:09
Ты же не из браузера делаешь

Kirill
21.04.2018
13:10:26
оказалось что на origin приходит undefined

Noname
21.04.2018
13:10:57
и вот еще
вынеси листенер телеграма выше подключения корса
кря

Kirill
21.04.2018
13:11:55
хитро
ладно, понял, спасибо
!

Alexandr
21.04.2018
13:12:15
подскажите по поводу промисов
есть axios.get('/api/auth') возвращает, логично, промис, но сервер может вернуть ответ с кодом 200 с ошибкой авторизации, и дальше надо перехватить как и не 200 ответ, так и ответ с ошибкой авторизации. как мне зафейлить промис в .then() ?
как зафейлить промис в .then()?
надо для проверки авторизации через axios.post('/api/auth'), ибо сервер может веруть отсет с 200 с сообщением о не верном логине или пароле

Леха
21.04.2018
13:13:58
Жесть какая )))) Ну смотреть тогда на response.status

Cenator
21.04.2018
13:14:20

Дмитрий
21.04.2018
13:15:19
return Promise.reject(...)

Google

Alexandr
21.04.2018
13:15:24
throw response
а модено чуть подробнее?
axios.post('/api/auth').then(response => throw response)
так?

Alex
21.04.2018
13:15:36

Noname
21.04.2018
13:15:56
в конце мидлвейр который слушает ошибки
а в обработчике запросе - return next(err)

Alexandr
21.04.2018
13:16:01
пробема в том, что я должен подстроиться под бэкэнд
axios.post('/api/auth').then(response => Promise.reject(response))
так?

Noname
21.04.2018
13:16:53
Тогда по телу ответа смотри и пиши логику исходя из этого

Alexandr
21.04.2018
13:17:03
да, так и делаю

Noname
21.04.2018
13:17:05

Alexandr
21.04.2018
13:17:59
шо выбрать?))
что правильней?
(конечно, перед throw и Promise.reject будет логика)
а модено чуть подробнее?
axios.post('/api/auth').then(response => throw response)
так?
axios.post('/api/auth').then(response => Promise.reject(response))
так?

Труба
21.04.2018
13:19:53

Alexandr
21.04.2018
13:20:04
просто я из java и для меня как-то дико, что можно делать throw на любом элементе

Дмитрий
21.04.2018
13:20:28
Да
Нефиг

Alexandr
21.04.2018
13:20:40
@vedrovich ага. понял. тогда надо бабель полифилл подключать

Труба
21.04.2018
13:21:07

Morsik
21.04.2018
13:21:10

Труба
21.04.2018
13:21:22

Alexandr
21.04.2018
13:21:41
нода 8+
но мне надо для браузеров

Google

Alexandr
21.04.2018
13:21:58
поэтому пытаюсь юзать то, что будет работать везде
(vue + vue-router + axios)

Дмитрий
21.04.2018
13:22:39
Хинт: не обязательно делать throw просто потому что можно)

Alexandr
21.04.2018
13:24:07
оке. остановлюсь на`let login = async()=>axios.post('/api...').then(response => if (...) return Promise.reject(response))`

Труба
21.04.2018
13:24:08

Cenator
21.04.2018
13:24:12

Alexandr
21.04.2018
13:24:27
да, так и есть. у меня бабель
всё. спасибо, пошёл пилить

Admin
ERROR: S client not available

Alexandr
21.04.2018
13:26:07
а babel-polyfill сделает всё, что надо, чтобы async/await работали в браузерах?

Дмитрий
21.04.2018
13:27:08
https://github.com/babel/babel/tree/master/packages/babel-preset-env

Alexandr
21.04.2018
13:27:37
таки, и в .babelrc впихнуть env

Труба
21.04.2018
13:28:39

Alexandr
21.04.2018
13:29:16
да, там по аналогии как и с postcss/html плагины впиливаются
такаэ, а если let response = await axios.post() то как обработать .catch() от него?

Илья
21.04.2018
13:34:20

Alexandr
21.04.2018
13:34:28
ага, спс
итог
export let login = async (creds) => {
try {
let response = await axios.post(`/api/auth`, creds)
let data = response.data
if (!data || !data.success) return false
api_token = data.api_token
user_status = data.user_status
return true
} catch (error) {
return false
}
}

Труба
21.04.2018
14:14:18


Mishell
21.04.2018
14:17:35
Подскажите, а если у меня есть куча дивов с постами, и я хочу к каждому посту приложить кнопку, что бы например удалить конкретно этот пост, то как мне стоит обрабатывать это действо?
<div class="post" id="${data.stuff_id}">
<p>ИнфаИнфаИнфа</p>
<button id="delete">Удалить</button>
</div>
После вызова функции, как понять какой именно пост нужно удалить среди десятков подобных? Можно ли получить контекст, в котором был клик, что бы получить div поста и как?

Google

Alexandr
21.04.2018
14:20:04
export const login = async creds => {
const { data } = await axios.post(`/api/auth`, creds)
if (data.success) {
api_token = data.api_token
user_status = data.user_status
return true
}
return false
}
Лучше использовать const вместо let (если данные не будут изменяться)
Try, catch не нужен здесь. Можешь поймать исключения, когда будешь вызывать login() функцию.
И старайся логику строить таким образом, чтобы в конце у тебя всегда был false или throw new Error, однажды это спасет тебе жизнь. =)

Tomas
21.04.2018
14:22:01
???☺️

Artur
21.04.2018
14:56:49
Подскажите, а если у меня есть куча дивов с постами, и я хочу к каждому посту приложить кнопку, что бы например удалить конкретно этот пост, то как мне стоит обрабатывать это действо?
<div class="post" id="${data.stuff_id}">
<p>ИнфаИнфаИнфа</p>
<button id="delete">Удалить</button>
</div>
После вызова функции, как понять какой именно пост нужно удалить среди десятков подобных? Можно ли получить контекст, в котором был клик, что бы получить div поста и как?
Добавить id к кнопке, отловить нажатие на клиенте, отправить ajax запрос на сервер с просьбой удалить, в случае успеха найти div с заданным элементом и удалить со страницы

Данил
21.04.2018
15:44:56

Mishell
21.04.2018
15:47:38

Данил
21.04.2018
15:54:15
но если кому-то очень не нравится onclick, то можно вписывать в атрибут data-id номер блока из списка "детей" у "родителя"
и ставить на клик каждого элемента при его создании обработчик

Andruha
21.04.2018
16:23:47
Хой, комрады.
Авторизация через passport, мидла для сессий такое вот:
const sessionMiddleware = session({
secret: 'secret',
maxAge: new Date(Date.now() + 1000 * 60 * 60 * 24 * 7),
store: new MongoStore({ mongooseConnection: db.connection }),
saveUninitialized: true,
resave: true
});
Хром не держит логин сразу после ребута компа, ФФ не держит логин сразу после ребута браузера.
Как заставить браузеры помнить логин на протяжении заданного времени (в моем случе неделя) независимо от перезагрузки компа или браузера.
Заранее благодарю.

Alexander
21.04.2018
16:28:02

Andruha
21.04.2018
16:29:01
Делай по jwt, проще будет
а если через пасспорт уже сделана авторизация через кучу провайдеров? много переделывать? с jwt дел не имел

Alexander
21.04.2018
16:29:49

Andruha
21.04.2018
16:31:58
на вопрос "много ли переделывать" гугл мне не ответит ?

Труба
21.04.2018
16:32:56

Andruha
21.04.2018
16:34:08

Morsik
21.04.2018
16:34:56
это на локалхосте?

Труба
21.04.2018
16:34:58
ты сессию чтоли в session storage держишь? Она сбрасывается после того как браузер закрывается, храни лучше в cookie

Andruha
21.04.2018
16:35:29