Pavel
Поиск по Гуглу express error handling творит чудеса
хотелось бы реальных каких-то примеров, а не отлова ошибки в одном роутере
Pavel
Ты до конца хоть прочёл?
меня интересует можно ли какой-то глобальный или изящный обработчик поставить, а не пихать везде try catch
Таймураз
http://expressjs.com/en/guide/error-handling.html
Таймураз
На русском тоже есть, если все же проявить учтивость
Pavel
спасибо
Таймураз
Таймураз
спасибо
Не за что Но такие простые вопросы гуглятся на раз
Pavel
Не за что Но такие простые вопросы гуглятся на раз
я видимо что-то упустил был при создании обработчиков для ошибок, а статейки эти видел уже
Таймураз
Бывает
Дима
Подскажите пожалуйста, есть ли варианты как можно сократить данную конструкцию:
Дима
// Index page router.get('/', (req, res, next) => { mongoClient.connect(url, (err, db) => { if(err) return console.log(err); db.collection("posts").find().toArray( (err, results) => { var posts = results; db.close(); res.render('post/index', { title: 'Posts', posts: posts}); }); }); });
Дима
У меня в каждом роуте объявляется mongoClient.connect
Дима
Можно ли сократить так чтобы в роутах можно было бы работать сразу с коллекций db.collection?
Артём
вынести коннект?
Дима
ага
Артём
вынеси)
Дима
Спасибо )
Михаил Макарычев
Await можно писать вне async?
Arthur
The await operator is used to wait for a Promise. It can only be used inside an async function.
Михаил Макарычев
Нет
А в браузерном js тоже нельзя?
Sergey
Нигде нельзя
Михаил Макарычев
Тоже
Ок. Спасибо
Cenator 🐈
А в браузерном js тоже нельзя?
только в консоли можно писать)
Eugeny
https://learn.javascript.ru/screencast/nodejs
часть 2. Создание приложения(1,2 уроки смотри)
Eugeny
там правда на примере экспресс 3, но думаю, ты разберешься, комменты читай, если что
Eugeny
или доку
Артём
просто в next() бросай ошибку и потом в конце где-нибудь делай такое что-то: "app.use(compression({})); app.use(bodyParser.urlencoded({extended: false})); app.use(bodyParser.json()); app.use(express.static('public')); routes(app); app.use(appErrorHandler);" Где appErrorHandler - это функа, которая обрабатывает все ошибки
Артём
ребят, как красиво обрабатывать ошибки на express сервере? кто как делает?
Vitaliy
ну самое простое мидллвеир з 4 параметрами
Eugene
Всем привет Как правильно бекапить и ресторить базу для тестов?
Юрий
Добрый день. Не подскажите, почему при попытке явно вызвать gc(), освобождение памяти происходит всё равно с длительной задержкой? Будто сборщик как работал в штатном режиме, так и продолжает работать? Т.е. что бы определить, сколько расходуется памяти на ту или иную операцию, приходится всё равно ждать. (но память при этом моментально освобождается при достижении лимита выделенной на процесс памяти)
Eugene
конкретно - sequelize, mocha, postgres в before я проверяю и закрываю все другие коннекты REVOKE CONNECT ON DATABASE chat FROM public; ' + 'SELECT pg_terminate_backend(pg_stat_activity.pid) ' + 'FROM pg_stat_activity ' + 'WHERE pg_stat_activity.datname = \'db\' AND pid <> pg_backend_pid()потом создаю слепок с текущей бд CREATE DATABASE backup WITH TEMPLATE bd OWNER postgresподключаюсь к ней, раню кейсы и в after дропаю бекапную базу правильно ли так делать?
Eugene
может, правильней скриптом делать бекап и рестор, и выполнять их в начале/конце всех тестов? но тогда каждый раз придется ранить все тесты и только из под терминала, в идее тоже хочется по кнопочке ранить конкретный маленький тест какой нибудь сейчас проблема в том, что переодически коннекты после запросов не закрываются и при след запросе падает на ошибке, что бж занята другими пользователями, мной же
Eugene
Короче, нипанятна вообще и гугл не гуглит
Vint
Всем привет Как правильно бекапить и ресторить базу для тестов?
Тебе нужны не бекапы, а сиды. Для тестов точно, для dev тоже полезно бывает.
Eugene
Тебе нужны не бекапы, а сиды. Для тестов точно, для dev тоже полезно бывает.
Да, я думал об этом Но фишка в том, что я делаю слепок с живой базы и тестирую на живых данных И тесты более валидны Нет?
Vint
Ну сделай из слепка сиды. Сделай дамп в plain sql формате, его накатывай перед тестами.
Semen
/stat@combot
Combot
combot.org/chat/-1001041204341
Vint
Node Security Platform, говорили они...
Vint
Dmitry
)))
Vint
И даже так к ним можно обратиться
Vint
Vint
Я сношал таких умельцев.
Yan👀
все робит вроде
Vint
Так это у простых смотрящих, а я свои запросики шлю.
Дима
Подскажите пожалуйста кто работал с express + mongo. Как реализовать пагинацию с данными в шаблон?
Дима
У меня есть предположение что в mongo ограничивать функции limit() по параметру в url
l3xxxy
Подскажите пожалуйста кто работал с express + mongo. Как реализовать пагинацию с данными в шаблон?
лол. последняя запись + или - количество отображаемых на странице записей, если выбрана страница - количество отображаемых записей на количество страниц умножаешь, и берешь последние количество отображаемых записей на странице
l3xxxy
ну примерно так насколько мне известно если по логике
Alexander
Подскажите пожалуйста кто работал с express + mongo. Как реализовать пагинацию с данными в шаблон?
let maxItemsPerPage = 6; let pageNumber = 1; let query = Model.find({}); query = query .limit(maxItemsPerPage) .skip(maxItemsPerPage * parseInt(pageNumber)) query.exec()
l3xxxy
сам пагинацию никогда не делал, делал черезщ подгрузку по последней записи и все
Николаич
mongoose-paginate
Дима
mongoose-paginate
Знал что есть какой-то пакет для этого. Однако он уже с октября 2016 ни разу не коммитился.
Дима
Еще подскажите, почему данный роут не найден, хотя в форме я указал тип метода
Дима
router.delete('/:postId', function(req, res) { mongoose.connect(url); var Post = mongoose.model("Post", postScheme); var id = req.params.postId; Post.findByIdAndRemove(id, function(err, doc){ res.redirect('/posts'); }); });
Дима
В шаблоне:
Дима
form(method='post', action='?_method=DELETE').btn-group button(type='submit').btn.btn-danger Delete post
Sergei
form(method='post', action='?_method=DELETE').btn-group button(type='submit').btn.btn-danger Delete post
эм ну у тебя method post потому что, а роутер ждет delete
Sergei
через форму по идее кроме get/post нельзя использовать ниче
Sergei
а то что у тебя там delete это get-параметр кек
Дима
через форму по идее кроме get/post нельзя использовать ниче
именно, поэтому то я и делаю подмену через action
Sergei
именно, поэтому то я и делаю подмену через action
каким образом, где то есть прокся, которая делает потом delete запрос?
Дима
каким образом, где то есть прокся, которая делает потом delete запрос?
нет, только в файле маршрутов указан путь до этой формы
Vitaliy
та отошли аяксик(fetch) который delete и все
Дима
router.delete
Sergei
ну тогда непонятно, с чего бы у тебя там должно подменяться на delete
Sergei
router.delete ожидает HTTP - DELETE, а получает HTTP - POST с query _method=DELETE, так дела не делаются))
Дима
как же тогда форму объявить?
Sergei
https://github.com/expressjs/method-override стоит?
Sergei
ну тогда надо вглубь копать, но вообще конечно извращение :/
Серёжа
всем привет ребят как исправить данную ошибку