@nodejs_ru

Страница 2405 из 2748
?
10.08.2018
19:25:18
ip: req.headers.ip, referer: req.headers.referer
req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress

Alexey
10.08.2018
19:25:45
вижу надо..

а как расшарить переменную глобально по роутам?

Google
Alexander
10.08.2018
19:26:22
req.peremennaya = 'lol'

и везде она будет в req.peremennaya

?
10.08.2018
19:26:40
Alexey
10.08.2018
19:26:43


+
а более красиво?

Alexander
10.08.2018
19:27:11
а более красиво?
этим пользуются почти все либы экспресса

app.use((req, res, next) => { req.key = 'value'; return next(); })

Alexey
10.08.2018
19:28:17
и везде она будет в req.peremennaya
видимо для этого нужно app.use и мидваре в корневом файле, что бы к req обратиться?

этим пользуются почти все либы экспресса
надо же.. думал что то посложнее..

app.use((req, res, next) => { req.key = 'value'; return next(); })
вот пока я писал ты уже написал..

Alexander
10.08.2018
19:28:44
видимо для этого нужно app.use и мидваре в корневом файле, что бы к req обратиться?
везде, где ты будешь иметь доступ к req, ты можешь получить доступ к этой переменной

req и res это конкретные переменные request и response stream текущего запроса. ты накапливаешь в них данные в каждой мидлваре, чтобы потом вернуть результирующую информацию в res. а с помощью next ты двигаешься к следующей мидлваре

Alexander
10.08.2018
19:30:46
http://expressjs.com/en/4x/api.html#app.get

Google
Alexander
10.08.2018
19:30:47
?

Alexey
10.08.2018
19:30:54
видимо так: app.use((req, res, next) => { req.ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress; req.referer = req.headers.referer return next(); })

Alexander
10.08.2018
19:31:08
а, вы через мидлварь

Alexander
10.08.2018
19:33:19
и как бы это сделать?
скорми в модуль app и сделай app.use(). но учти, что это будет срабатывать на каждый запрос

Alexander
10.08.2018
19:34:14
кстати, какой мидлварью грузить файлы?

Alexey
10.08.2018
19:34:18
скорми в модуль app и сделай app.use(). но учти, что это будет срабатывать на каждый запрос
типа иньекция зависимости.. ну мне он не нужен на каждый запрос.. мне чисто нужно это для формирования текста заказа в одном конкретном роуте.. тогда как? передавать из роута аргумент с ip и только?

Alexey
10.08.2018
19:35:56
app.post('/sformirovat_zakaz', (req, res, next) => {})
app.post("/add_order", async (req, res) => { console.log("req", req.body); const order = req.body.order; const client_id = req.body.client_id; const client = req.body.client; const config_id = req.body.config_id; const config = req.body.config; console.log("####", req) const msg = require("../../helpers/order_msg")( config, config_id, order, client, );

у меня что то типа того.. те модуль уже в обработку роута рекьюриться..

Alexander
10.08.2018
19:36:29
зачейни

Alexey
10.08.2018
19:36:51
зачейни
то есть? чейн кусочек?

понятно дело я могу в модуль из роута просто аргументом передать ip так норм?

Alexander
10.08.2018
19:37:49
пусть модуль у тебя возвращает функцию middleware с параметрами req, res, next и в месте его подключения просто пишешь: const module = require('...order_msg'); app.post('/post_order', module.middleware);

Alexey
10.08.2018
19:39:21
понял.. это что бы перед обработкой роута выполнился.. да можно.. но тут чуток излишне.. тут лишь текст письма сформировать.. это просто хелпер.. и нужен он не именно перед роутом... ну а скажем так в середине его обработки..

Google
Alexander
10.08.2018
19:39:52
тогда импортируй его выше как функцию обработчик от параметров, перечисленных тобой выше. а в сам хелпер отправляй только необходимую информацию

так же, как ты сделал выше, только require вынеси за пределы миддлвари

Alexey
10.08.2018
19:40:44
так же, как ты сделал выше, только require вынеси за пределы миддлвари
можешь показать пример.. тогда выносить вместе с аргументами или без..

Alexander
10.08.2018
19:41:20
можешь показать пример.. тогда выносить вместе с аргументами или без..
const helper = require("../../helpers/order_msg"); app.post("/add_order", async (req, res) => { console.log("req", req.body); const order = req.body.order; const client_id = req.body.client_id; const client = req.body.client; const config_id = req.body.config_id; const config = req.body.config; console.log("####", req) const msg = helper( config, config_id, order, client, );

Alexey
10.08.2018
19:41:38
понял без аргументов.. минуту.. пробую..

Alexander
10.08.2018
19:45:52
ну ::1 это локалхост

Alexey
10.08.2018
19:51:58


нужно файл с вот такого типа js объектом расшарить фронту..

Просто что бы axios его на фронте скачивал и выполнялся он там..

Желательно роут создать и get запрос...всего 4 кб. те с производительностью тоже видимо не вопрос..

not an Alex
10.08.2018
20:12:13
Добрый вечер! Буду очень благодарен за помощь Никак не могу понять в чем проблема var mongoose = require('mongoose'); var bcrypt = require('bcrypt'); var saltRounds = 8; var user = new mongoose.Schema({ name: { type: String }, encryptedPassword: { type: String } }, { toJSON: { virtuals: true }, toObject:{ virtuals: true } }); user.virtual('password').set((password) => { bcrypt.genSalt(saltRounds, (err, salt) => { bcrypt.hash(password, salt, (err, hash) => { this.encryptedPassword = hash; }); }); }); user.methods.checkPassword = function(password) { bcrypt.compare(password, this.encryptedPassword, (err, res) => { return res; }); } module.exports = mongoose.model('user', user);

not an Alex
10.08.2018
20:14:42
а в чем проблема?
не работает виртуальное поле

а в чем проблема?
вот так я проверяю это mongoose.connect(cfg.urlDB, {useNewUrlParser: true}); var user = require('./models/user'); var test = new user({name: 'test'}); test.password = 'test'; test.save();

суть в том, что сохраняется только поле name, а виртуальное поле никак не хочет работать

Alexander
10.08.2018
20:21:44
Валерий
10.08.2018
20:29:09
Надеюсь вы не только по ноде мастера а и по браузерному тоже) Есть видео, которое долго загружается. Пытаюсь сделать прогрес бар, отлавливаю событие progress, но чтобы посчитать процентаж нужно знать длинну видео, и оно равно NaN, узнал что video.duration становится числом после события onloadmetadata, но оно происходит после progress. И в процессе загрузки не могу знать процентаж. Кто с этим сталкивался. Как это исправить?

Валерий
10.08.2018
20:30:24
писать себе метаданные самому?
А как их можно узнать до загрузки видео?

Google
Alexander
10.08.2018
20:30:45
А как их можно узнать до загрузки видео?
ты понимаешь что я написал?

берешь <бд> и хранишь в ней метаданные видосиков и их адреса. превью там всякие, аки на ютубе

Валерий
10.08.2018
20:33:18
Интересный метод. Я бы так и сделал, если бы мне куча ресурсов не посоветовала использовать события onprogress и другие ништяки. Видимо есть способ без явного хранения метадаты. И я хотел бы его найти

not an Alex
10.08.2018
21:55:59
user.virtual('password').set(function(password) { var salt = bcrypt.genSaltSync(saltRounds); var hash = bcrypt.hashSync(password, salt); this.encryptedPassword = hash; });
спасибо, помогло но почему оно не принимает сокращенную запись функций (() => {})?

Alexander
10.08.2018
21:58:07
так и должно быть )

https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Functions/Arrow_functions

- (но не привязаны к собственному this, arguments, super, или new.target). Стрелочные функции всегда анонимные.

енот
11.08.2018
01:22:36
а как ты проверяешь?

проверяешь ты как?

Nuriddin
11.08.2018
05:23:05
просто через субмит

енот
11.08.2018
05:23:24
открой для себя удивительный мир POSTMAN

Nuriddin
11.08.2018
05:27:22
на postman тоже такой ответ получился

енот
11.08.2018
05:27:39
какой-такой?

Nuriddin
11.08.2018
05:27:50
долгая загрузка и никакой ответ

енот
11.08.2018
05:27:50
покажи скриншот

так ты значит не на тот порт ломишься

Nuriddin
11.08.2018
05:28:42
нет порт правильно. get работает

Google
Maksim
11.08.2018
05:46:19
Провет, поделитесь, кто как защищается от csrf?

Таймураз
11.08.2018
05:50:53
Во-первых, gist.github.com Во-вторых, .send не завершает ответ

нет порт правильно. get работает
Насчёт второго ошибся, перечитал доку экспресса В общем, как скинешь гист и удалишь эти полотна кода отсюда- заново почитаю

Таймураз
11.08.2018
06:03:20
https://gist.github.com/falconur/24b6deee667ac7da4260aa5e1b5a03fa
Get засунь после всех мидлварей

https://gist.github.com/falconur/24b6deee667ac7da4260aa5e1b5a03fa
И express.static последним сделай

Nuriddin
11.08.2018
06:08:25
Get засунь после всех мидлварей
теперь и get перестал работать. Значит какой-то middleware не правильно работает?

Nuriddin
11.08.2018
06:11:23
bodyParser.json() Скобки
Ого. Сработала. Спасибо?

Страница 2405 из 2748