Vitaliy
Дима
Дима
Просто совсем еще неразобрался с 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
catch(err){} так лучше не оставлять
Дима
Без try/catch не получится данные получить?
Алексей
Просто у тебя будет ошибка не перехваченная
Алексей
Алексей
Таймураз
Таймураз
Посмотрел весь код
Надо catch убрать:)
Vitaliy
+ за это
Vitaliy
Дима
Вуаля
Алексей
а разве под капотом не функции-генераторы?
я немного не то имел ввиду
Цель функций async/await упросить использование promises синхронно и воспроизвести некоторое действие над группой Promises. Точно так же как Promises подобны структурированным callback-ам, async/await подобна комбинации генераторов и promises.
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/async_function
Дима
в 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
Алексей
.then(data => data) бесполезная строчка. Вы берёте результат await mongoose.model("User", userScheme).find({}) и ничего с ним не делая возвращаете его же
Дима
Спасибо всем, рад очень ) Но буду восполнять пробелы в async/await
Vitaliy
.then(data => data) убери
Дима
Дима
Артём
Есть тут те, кто работал с https://github.com/zerobias/telegram-mtproto ??
Дима
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
ну без try catch не оч правильно
KlonD90
Vitaliy
так как к фишкам async/await относится и использование стандартных try/catch/ finally
Vitaliy
да будет сров ошибки которую ты не обработаеш
Дима
Дима
Vitaliy
но наверное не при отсутсвии даных, а при действительно ошибке самой бд
Vitaliy
а не обработаная ошибка крашит прогу
Alexey
а не обработаная ошибка крашит прогу
// 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}));
});
Alexey
Что-то вроде этого
Roman
https://hackernoon.com/im-harvesting-credit-card-numbers-and-passwords-from-your-site-here-s-how-9a8cb347c5b5
Alexey
а не обработаная ошибка крашит прогу
// 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: [] });
}
});
Alexey
Или так, например
Alexey
next аргумент, смотря на этот конкретный случай, не нужен
Vitaliy
да ну все же было бы хорошо может
Vitaliy
} catch (error) {
users = [];
console.warn(error);
} типо такого
Vitaliy
понять в чем ошибка и всякое такое
Alexey
Ага, там на усмотрение разработчика, как лучше обрабатывать эту ошибку
Vitaliy
ну да, я про то что ее нужно как-то обработать сам error
Alexey
ну да, я про то что ее нужно как-то обработать сам error
User.find({})
.then(users => users) // Тут справедливо заметили, что это можно опустить, если нет какой-либо дополнительной обработки
.catch(error => []);
.then(users => res.render('user/index', {title: "Users", users: users}));
Vitaliy
только хотел сказать ;))
Таймураз
Alexey
Alexey
только хотел сказать ;))
// 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: []
});
}
});
Alexey
Пример с использованием middleware`а
Vitaliy
а async??
Alexey
Alexey
Поправил
Vitaliy
n1
Alexey
Пользователи обычно во многих местах необходимы, можно вынести это в отедельную логику, не зависимо от этого роута
Alexey
Вариант масса, в общем
Alexey
Плюс, http://expressjs.com/en/guide/error-handling.html
Александр
ребят я не спец, но какие нюансы, и какие bestPractices для опираций с числами?
я тут нашел у себя багу:
node
> 18 * 1.9
34.199999999999996
> 18 * 19 / 10
34.2
В других языках (dart, python, swift) идет умножение на 1.9 верно
Dima
Да! Плюсую. Интересная тема.
Alexey
db.models.find({}, { comments: 1 }).pretty()
Alexey
Mykola
https://github.com/josdejong/mathjs
не юзал либу но вроде об этом
Igor
только перестал ставить ; и набросили г на вентилятор
Igor
Конец спорам о том, нужно ли использовать точки с запятыми в JavaScript: TC39 рекомендует не полагаться на ASI (алгоритм автоматической расстановки точек с запятыми) и ставить ; всегда — https://github.com/tc39/ecma262/pull/1062
Dmitry
Valeriu
Можно регистрировать пользователя в Telegram через API?
Valeriu
Спрашиваю потому что видел в WEB версий что пишет что регистрацию нужно пройти через приложение iOS или Android
Alexander
Народ, не силён в регулярках.
Вот это можно как-то оптимизировать?
description = description
.replace(/(<br\s*\/>)|(<\/p>\s*|\n*<p>)/gm, "\n") // Paragraph
.replace(/<(?:.|\n)*?>/gm, "")
.trim();
Что-то мне подсказывает, что это "дорого" работает.
Narek
regex101.com
Rafael 🌵
debuggex еще есть
Anonymous
гайз, я тут пробую освоить`jwt`
я скину серию скриншотиков
Anonymous
Anonymous
Anonymous