
arts
12.01.2018
08:36:25

Vitaliy
12.01.2018
08:36:26
http://thecodebarbarian.com/using-async-await-with-mocha-express-and-mongoose

Алексей
12.01.2018
08:36:28
router.get('/', async function(req, res, next) {
...
try{
var users = await User.find({})
}
catch{}

Vitaliy
12.01.2018
08:36:52

Google

Dmitriy
12.01.2018
08:40:20
Просто совсем еще неразобрался с async/await
А решить проблему хотелось элегантно и красиво
router.get('/', async function(req, res, next) {
mongoose.connect(url);
var User = mongoose.model("User", userScheme);
try{
var users = await User.find({})
.then(data => data)
.catch(err => err);
}
catch(err){}
res.render('user/index', {title: "Users", users: users});
});

Vitaliy
12.01.2018
08:42:29
catch(err){} так лучше не оставлять

Dmitriy
12.01.2018
08:42:32
Без try/catch не получится данные получить?

Алексей
12.01.2018
08:43:32
Просто у тебя будет ошибка не перехваченная

Таймураз
12.01.2018
08:46:53
Посмотрел весь код
Надо catch убрать:)

Vitaliy
12.01.2018
08:47:54
+ за это

Google

Dmitriy
12.01.2018
08:53:23
Вуаля

Алексей
12.01.2018
08:53:24
а разве под капотом не функции-генераторы?
я немного не то имел ввиду
Цель функций async/await упросить использование promises синхронно и воспроизвести некоторое действие над группой Promises. Точно так же как Promises подобны структурированным callback-ам, async/await подобна комбинации генераторов и promises.
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/async_function

Dmitriy
12.01.2018
08:53:26
в 3 строки )
router.get('/', async (req, res, next) => {
mongoose.connect(url);
var users = await mongoose.model("User", userScheme).find({}).then(data => data);
res.render('user/index', {title: "Users", users: users});
});
эээ, но в редакторе 3 )

Vitaliy
12.01.2018
08:54:01

Алексей
12.01.2018
08:54:17
.then(data => data) бесполезная строчка. Вы берёте результат await mongoose.model("User", userScheme).find({}) и ничего с ним не делая возвращаете его же

Dmitriy
12.01.2018
08:54:24
Спасибо всем, рад очень ) Но буду восполнять пробелы в async/await

Vitaliy
12.01.2018
08:54:29
.then(data => data) убери

Dmitriy
12.01.2018
08:54:48

Артём
12.01.2018
08:55:15
Есть тут те, кто работал с https://github.com/zerobias/telegram-mtproto ??

Dmitriy
12.01.2018
08:55:30
router.get('/', async (req, res, next) => {
mongoose.connect(url);
var users = await mongoose.model("User", userScheme).find({});
res.render('user/index', {title: "Users", users: users});
}); Совсем не плохо теперь

Vitaliy
12.01.2018
08:55:53
ну без try catch не оч правильно

KlonD90
12.01.2018
08:55:58

Vitaliy
12.01.2018
08:57:11
так как к фишкам async/await относится и использование стандартных try/catch/ finally

Dmitriy
12.01.2018
08:57:11

Vitaliy
12.01.2018
08:57:35
да будет сров ошибки которую ты не обработаеш

Dmitriy
12.01.2018
08:57:42

Google

Vitaliy
12.01.2018
08:58:52
но наверное не при отсутсвии даных, а при действительно ошибке самой бд
а не обработаная ошибка крашит прогу

Alexey
12.01.2018
09:01:57
а не обработаная ошибка крашит прогу
// Connecting there...
const User = mongoose.model("User", userScheme);
router.get('/', function(req, res) {
User.find({})
.then(users => users)
.catch(error => []);
.then(users => res.render('user/index', {title: "Users", users: users}));
});
Что-то вроде этого

Roman
12.01.2018
09:02:17
https://hackernoon.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5

Alexey
12.01.2018
09:04:54
а не обработаная ошибка крашит прогу
// Connecting there...
const User = mongoose.model("User", userScheme);
router.get('/', async function(req, res) {
let users;
try {
users = await User.find({});
} catch (error) {
users = [];
}
if (users && users.length) {
res.render('user/index', { title: "Users", users: users });
} else {
res.render('user/index', { title: "Users", errors: [] });
}
});
Или так, например
next аргумент, смотря на этот конкретный случай, не нужен

Vitaliy
12.01.2018
09:06:57
да ну все же было бы хорошо может
} catch (error) {
users = [];
console.warn(error);
} типо такого
понять в чем ошибка и всякое такое

Alexey
12.01.2018
09:08:13
Ага, там на усмотрение разработчика, как лучше обрабатывать эту ошибку

Vitaliy
12.01.2018
09:08:45
ну да, я про то что ее нужно как-то обработать сам error

Alexey
12.01.2018
09:10:34
ну да, я про то что ее нужно как-то обработать сам error
User.find({})
.then(users => users) // Тут справедливо заметили, что это можно опустить, если нет какой-либо дополнительной обработки
.catch(error => []);
.then(users => res.render('user/index', {title: "Users", users: users}));

Vitaliy
12.01.2018
09:11:10
только хотел сказать ;))

Таймураз
12.01.2018
09:11:57

Alexey
12.01.2018
09:13:03
только хотел сказать ;))
// Connecting there...
const User = mongoose.model("User", userScheme);
router.get('/',
async (req, res, next) => {
let users;
try {
users = await User.find({});
} catch (error) {
users = [];
}
res.locals.users = users;
next();
}, (req, res) => {
const {
users
} = res.locals;
if (users && users.length) {
res.render('user/index', {
title: "Users",
users: users
});
} else {
res.render('user/index', {
title: "Users",
errors: []
});
}
});
Пример с использованием middleware`а

Vitaliy
12.01.2018
09:16:30
а async??

Google

Alexey
12.01.2018
09:16:47

Admin
ERROR: S client not available

Alexey
12.01.2018
09:17:07
Поправил

Vitaliy
12.01.2018
09:17:36
n1

Alexey
12.01.2018
09:18:00
Пользователи обычно во многих местах необходимы, можно вынести это в отедельную логику, не зависимо от этого роута
Вариант масса, в общем
Плюс, http://expressjs.com/en/guide/error-handling.html

Gleb
12.01.2018
10:03:04

Александр
12.01.2018
10:04:53
ребят я не спец, но какие нюансы, и какие bestPractices для опираций с числами?
я тут нашел у себя багу:
node
> 18 * 1.9
34.199999999999996
> 18 * 19 / 10
34.2
В других языках (dart, python, swift) идет умножение на 1.9 верно

Dima
12.01.2018
10:06:43
Да! Плюсую. Интересная тема.

Alexey
12.01.2018
10:06:59
db.models.find({}, { comments: 1 }).pretty()

Gleb
12.01.2018
10:08:24

Nikolay
12.01.2018
10:08:47
https://github.com/josdejong/mathjs
не юзал либу но вроде об этом

DimenSi
12.01.2018
10:19:59

Nikolay
12.01.2018
10:20:50

Igor
12.01.2018
10:50:02
только перестал ставить ; и набросили г на вентилятор
Конец спорам о том, нужно ли использовать точки с запятыми в JavaScript: TC39 рекомендует не полагаться на ASI (алгоритм автоматической расстановки точек с запятыми) и ставить ; всегда — https://github.com/tc39/ecma262/pull/1062

Dimanius851
12.01.2018
10:50:56

Valeriu
12.01.2018
11:29:08
Можно регистрировать пользователя в Telegram через API?

Google

Valeriu
12.01.2018
11:30:28
Спрашиваю потому что видел в WEB версий что пишет что регистрацию нужно пройти через приложение iOS или Android

Alexander
12.01.2018
11:35:02
Народ, не силён в регулярках.
Вот это можно как-то оптимизировать?
description = description
.replace(/(<br\s*\/>)|(<\/p>\s*|\n*<p>)/gm, "\n") // Paragraph
.replace(/<(?:.|\n)*?>/gm, "")
.trim();
Что-то мне подсказывает, что это "дорого" работает.

Narek
12.01.2018
11:35:27
regex101.com

Rafael
12.01.2018
11:35:56
debuggex еще есть

Alexander
12.01.2018
11:36:00

Moe
12.01.2018
12:27:26
гайз, я тут пробую освоить`jwt`
я скину серию скриншотиков

Andrey ?
12.01.2018
12:27:58
Сюда всмотрись