Andrew Kiselev
а если user что-то создает, то он получается author
Alex
а если user что-то создает, то он получается author
а еще target, если что то получает
Alex
и sender
Alex
и еще кучу всяких вариантов
Andrew Kiselev
как никак одна из самых сложных задач в программирование)
Anonymous
actor
Anonymous
👁
Дима
actor
Сразу хочется подрубить акку
Dmitry
нет, там 30 полей которые заполняет пользователь и их надо проверить на число, или просто существует ли поле, потом составить запрос к бд
В npm есть много всего вкусного по валидации json. Самый толковый, вроде, ajv. Удобство в том, что схема отдельно, логика отдельно. Я сейчас пилю проект с монгой, все проверки отдал валидатору БД непосредственно, но кроме монги вроде так мало кто умеет.
Maxim
БД к кторой идут запросы MySql, это бд от CMR
Maxim
я остановился на том, что бы обернуть if else в Promise и вызывать через await
Maxim
будет sql запрос и если валидация проходит, то будет дописываться поле с условием в строку sql запроса
Maxim
тоесть будет запрос let sql = 'SELECT ... WHERE'
Maxim
потом sql += await validator(field)
Maxim
и так по всем полям, но некоторые можно объединить в группы
Maxim
заворачивать синхронный код в promise 👍
Его же можно сделать асинхронным - я еще не писал, так идея пока
Maxim
Мне надо сделать так, что бы проверки разбить на куски что бы не было бокировки потока на время проверок
Maxim
А чем не угодил knex?
сейчас посмотрю, спс
Anonymous
Anonymous
Вопрос нуба - это допустимый вариант ? меня смущает чет промис внутри промиса
Anonymous
конечно
Anonymous
но суть промисов в том чтобы этого не делать)
Anonymous
promise1().then(x => promise2(x)).then(y => promise3(y)).then(...)
Ale
Даже лучше: promise1().then(promise2).then(promise3)
Ale
Ну это чтобы продать промисы чувакам, которые их не видели)
Anonymous
а я не знаю как по другому делать ) я так в туторе увидел ) больше нигде не нашел нормальный пример ) это все трудно из дома учить, оторвано от реальной разработки
Anonymous
commentController.sendComment = (req, res, next) => { const author = req.body.author; const postId = req.params.id; let newComment = new Comment(); newComment.author = author; newComment.postId = postId; newComment.text = req.body.comment; newComment.save().then(() => { Post.findByIdAndUpdate(postId,{$push: {"comments" : newComment._id}}) .then(() => { res.redirect("/profile/"+req.params.nickname+"/post/"+postId) }).catch(err => next(err)); }).catch(err => next(err)); };
Anonymous
ааа... я не знаю как правильно это тут вставлять
Sergey
да и как бы че на async/await не переписать?
Sergey
интерполяцию
Sergey
пздц
Anonymous
я не умею на async ) я на просы это кое как переписал по видео
Anonymous
нет пока - я пишу как придет в голову исходя из разных туторов. Я не знаю как правильно писать ) Поэтому я не вижу толка от такого обучения )))
Anonymous
тут вот весь проект https://github.com/ZackFox/nodeTodoTasks а тут демо на хероку https://nodetask.herokuapp.com/ (второго пользователя я удалил)
Anonymous
спасиб 😊
Sergey
+
Sergey
npmjs.com/eslint-config-atomix-base
Anonymous
я не знаю как валидацию лучше прикручивать только на клиенте .. .или и там и там ) у меня сообщения валидации часть выводится на клиенском скрипте, а часть возвращает сервер. Поэтому все придется переписывать если я захочу прикрутить смену локали ) я не знаю как это делать, но мне хотелось бы писать так, будто я в перспективе это приделал бы )
Anonymous
я даже не знаю как вывести в шаблоне отформатираванную дату из mongoDB с русскими месяцами
Anonymous
нет ни одного тутора где бы от начала до конца написали бы проект на продакшен уровне. Везде кустарщину пишут. Никто не возмет на работу с такими знаниями. 😞
Anonymous
лол
Anonymous
👍
Sergey
👍
🤝
Evgeny
Круто ты его снёс
Nikita
Хах.
John
я не знаю как валидацию лучше прикручивать только на клиенте .. .или и там и там ) у меня сообщения валидации часть выводится на клиенском скрипте, а часть возвращает сервер. Поэтому все придется переписывать если я захочу прикрутить смену локали ) я не знаю как это делать, но мне хотелось бы писать так, будто я в перспективе это приделал бы )
Лучше делать только на сервере, а при сабмите кнопки на клиенте, отправлять данные аяксом на сервер, чтобы там эта единственная валидация отработала и вернула json ошибок, если они есть. Клиентская валидация не валидация, а чисто для удобства юзер интерфейса, а этим способом будет и без перезагрузки, и наверняка
Ilya
Привет. Не подскажете, как привильно организовать приложение react + express?
Ilya
Нормально ли собранный фронтенд запихивать в статику?
Nikita
Короче, делай валидацию на сервере.
Nikita
Валидация на сервере должна работать полноценно, и рассчитывай только на неё.
Nikita
Поверх этого можешь добавить валидацию на клиенте чтобы данные туда-сюда не гонять, но это просто для юзабилити, и сюда скорее подходят формы инпута которые не дают отправить невалидные данные (регулярки, емейлы, телефоны, всё это).
John
На пхп фреймворках такой способ (валидация на сервере, аякс при сабмите, возврат json ошибок) уже из коробки, это удобно и правильно
Nikita
Но рассчитывать на то, что они сработали — нельзя, валидация на сервере должна всё предусматривать и проверять.
Ilya
Привет. Не подскажете, как привильно организовать приложение react + express?
Anonymous
просто я хотел чтобы до отправки всей формы отобразилось, естьли уже в базе такие email и nickname
Ilya
Нормально ли собранный фронтенд запихивать в статику?
Nikita
валидация должна осуществляться ровно в том запросе, который совершает действие (либо подписывает форму на совершение действия)
Sergey
Нормально ли собранный фронтенд запихивать в статику?
да но раздавать экспрессом в проде нет смысла лучше пусть этим занимается профессионал — nginx
John
Привет. Не подскажете, как привильно организовать приложение react + express?
На днях сам интересовался подобным, т.к. фронт не знаю вообще Мне нравится вариант rest на бэкенде, реакт через fetch взаимодействует с этим rest api, отправляя/получая данные
Ilya
А если у нас чат и сервер с сокетами? Как управлять ими? Как вызывать события сокетов?
Ilya
Через REST
Sergey
сокеты и rest это разные вещи
Ilya
Я понимаю. Сервер с socket.io, например. Тогда через REST не получается, наверное
Sergey
rest отдельно сокеты отдельно
John
>реакт через fetch реакт через axios* Пофиксил тебя
А почему axios?) Я набрал в гугле fetch react (как мне посоветовали), там и есть ссылка на npm и codepen с примером. Я так понимаю fetch - это библиотека для реакта, которая отравляет аякс запросы, но все выполняется не в коллбэках, а в промисах?
Anonymous
fetch это в стандарте