Bogdan
Пример для path-to-regexp - строка на вход может быть в одном из 4 форматов
':name+([a-zA-Z]+) :surname([a-zA-Z]+)',
':surname([a-zA-Z]+)/:surname([a-zA-Z]+)',
':name([a-zA-Z\-]+) :surname([a-zA-Z]+)/:name([a-zA-Z-]+) :surname([a-zA-Z]+)',
':surname([a-zA-Z]+) :shortName([A-Z]\.)/:surname([a-zA-Z]+) :shortName([A-Z].)'
Нужно узнать какой формат подходит и распарсить по нему строку, идеально в js объект
Victor
вхождений может быть много? разних форматов? или только 1
Bogdan
Там массив строк в любом из 4 форматов, что я выше написал
Элементы массива перебираем на соответствие шаблонам и парсим
Victor
@bednij_bohdan array.map(string => string.match((regexp1)|(regexp2))) - почему не подходит?
Bogdan
Обычные регулярки не очень подходят ввиду отсутствия результата по ключам(
У меня может быть, что идет :name :surname, а может быть и наоборот - :surname :name
и неясно что где находится
Vlad
Кто знает что можно почитать по связям в БД? Какую-то литературу по проектированию баз данных возможно? Интересует именно Postgres / sequalize. У меня проблемы в фундаментальных вещах в проектировании
Vlad
Т.е не совсем понимаю какие таблицы создавать и как их связывать
Bogdan
https://ru.stackoverflow.com/questions/69743/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D1%81%D0%B2%D1%8F%D0%B7%D0%B8-%D0%BC%D0%BD%D0%BE%D0%B3%D0%B8%D0%B5-%D0%BA%D0%BE-%D0%BC%D0%BD%D0%BE%D0%B3%D0%B8%D0%BC
Victor
@bednij_bohdan какие есть ресурсы расшарить код?
Bogdan
pastebin, github gist
Vlad
Bogdan
Так там то и понимать нечего в тех связях :)
Вопрос задавай конкретный, поможем
Vlad
И как их связать
Sergey
Eugene
Vlad
О
Vlad
Хорошая идея
Vlad
Спасибо
Eugene
Исправил ссылку:)
Victor
@bednij_bohdan https://gist.github.com/Vilintritenmert/f29f5f2c0e111b43e040ad9925f5a5ea
а такой вариант?
Bogdan
V
О
Вообще для начала лучше спроектируй схему, попробуй запросы написать руками, без ОРМ
V
будет намного понятней как что связано
Victor
Влад google paint прикольно схеми рисовать (там стрелочки переносяться за кубиками)
Vlad
Все, на схеме сразу понятно стало, спасибо за совет)
Victor
@bednij_bohdan :surename не нужно парсить?
Victor
или приведи все к одному формату , просто пустие поля оставь...
Victor
{
name:result[0],
second_name:'',
last_name:result[1]
}
Victor
и будет счастье)
Богдан
Я тонну статей уже прочел, но сижу туплю когда нужно решить какие данные в какую таблицу определить
Все очень просто - надо разложить любое приложение на сущности - например есть приложение где юзер может создавать, редактировать, удалять заметки в папках. Получаем что у каждого юзера может быть много папок у каждой папки может быть много заметок. Тут у нас три сущности - юзер, папка, заметка и соотвественно каждой из этих сущностей должна соответствовать таблица в бд потому что каждую из этих сущностей мы хотим создать (юзеры создаются через регистрацию), отредактировать или удалить, и в каждой записи в таблице (кроме юзера) должно быть также поле родительской сущности (например для заметки - folderId, для папки userId) по которым мы будем делать поиск в базе. Несмотря на то что некоторые бд (например монга) позволяют использовать вложенные документы лучше никогда не пользоваться этой возможностью. В итоге у нас получается стандартная схема с двумя one-to-many связями. А вот связи многие ко многим нужны когда у нас меняются требования и нужно чтобы юзер мог например хранить заметку сразу в нескольких папках (а-ля теги). Получается что в папке может находится много заметок но и заметка также может находится во многих папках. В различных документных бд можно например чтобы заметка хранила не folderId а поле foldersId с массивом айдишников папки. Но опять так лучше никогда не делать а всегда создавать отдельную таблицу потому что практически всегда появятся фичи например чтобы юзер мог расположить заметку по кастомной позиции в папке и тут уже без промежуточных таблиц не обойтись. В sql-базах выбора и так нет поэтому просто создается промежуточная таблица в которой каждая запись будет хранить поле folderId и noteId и мы можем выбрать все заметки по данному айдишнику папки и наоборот все папки по айдишнику заметки. Там же можно хранить дополнительные поля вроде позиции заметки в папке потому что эту информацию нельзя логически засунуть ни в папку ни в заметку а относится она как раз к самой связи заметка-папка
Kons
Я тут пытаюсь сделать «по красоте» всё. Как вам кажется, какой из хэндлеров понятней и информативней? — https://gist.github.com/tsabolov/6b8dc87ed702df5e1940ae8b9fd857ab
Victor
мне с промисами
Bogdan
async/await
Anonymous
Скачай учебник по реляционной алгебре
Anonymous
@постгрес вопрос
Evgeny
Привычнее с промисами, но это деформация. Пиши с асинком
Kons
Привычнее с промисами, но это деформация. Пиши с асинком
Кстати, только что прочитал, что если из хендлера вернуть промис, то Hapi (а это именно его хендлер) сам обработает случай, если вдруг промис реджекнется. Т.ч. второй пример можно переписать так:
internals.handler = async (req, reply) => {
const { fileId, fileName } = req.params;
const file = await files.findOne({ id: fileId, name: fileName });
Hoek.assert(file, files.error('NOT_FOUND', fileName));
reply(file);
};
Kons
И вот это красиво )
Victor
+
Zaur
Roman
👍 отличная тема для стартапа в духе башорга )
Victor
@abdulgalimov 🚫 Политика запрещена - из правил чата
Zaur
Я не автор этого, ничего не имею против кого бы то нибыло, просто смешно же )) не? Если кого то оскорбил - сорян
Bogdan
Andrey
установи манджаро арч
Alexander
Есть что получше passport? Если нет, то какую лучше стратегию использовать? Сессии или через токен? Приложение rest api
Alexander
На одном домене
Alexander
Тогда нужно отправлять сессию при каждом запросе?
Nurik
REST это без сессий.
Victor
+1 к токену
Kons
REST это без сессий.
Ну да, если следовать канонам, то надо передавать с каждым запросом имя-пароль.
Cheslav
подскажите что мне нужно запускать чтобы определенные действия совершались например раз в час?
Cheslav
вроде про крона слышал, он подойдет для этого?
Victor
https://www.npmjs.com/package/node-schedule
Borys
привет всем! сорри за глупый вопрос, но нигде не видел и спросить некого.
любой мануал по ноде показывает как создать веб сервер.
const server = http.createServer((req, res) => {
навешивается листенер и т.д.
вопрос - на живых проектах так делают или только на деве?
спасибо!
Evgeny
Гуглить экспресс жс
Borys
@NordLuf
вы имеете ввиду что-то подобное
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.sendfile('index.html');
});
app.listen(8080);
?
просто я знаю что есть апач, нжинкс и т.д.
но нода их не использует? а строит веб сервер на своих модулях? конечно пишем роуты, контроллеры и т.д.
?
Evgeny
Не использует. Но можно ставить нгинкс перед нодой
Borys
т.е. в принципе буквально написаных выше строк хватит для работы чего-то небольшого и так можно будет выпускать в инет?
п.с. я читал про кластер, который позволяет делать ноду многопоточной, но мне поки антересно в принципе.
как-то слишком просто и потому кажется что что-то еще должно быть.
п.с. еще раз прошу прощения за простые вопросы - только начинаю изучать ноду
V
Просто в ноде встроенный веб сервер, поэтому так просто
Borys
ясно. спасибо
Михаил Макарычев
Borys
@mak_tu спасибо!
Фεδως
Потому что nginx тупо намного быстрее. Но если лень играться и проект мелкий очень - можно обойтись без него и отдавать статику тоже нодой
Roman
Serhii
Кстати, использовал ли кто микросервисы, и какие либы брали для дела сего? Видел Сенека и Коте в нпм, но пока не практиковался, решил спросить
Vlad
Есть тут не спящие, работающие?) Оператор ILIKE в sql же игнорирует регистр?(большие / маленькие буквы)
Vlad
Почему то в postgres работает только с регистром определенным, может я неправильно понял его назначение?
Igor
ILIKE - фишка постгреса, регистр игнорирует
Vlad
Даже если % использую, верно?
Vlad
У меня наотрез отказывается при поиске выдавать регистронезависимый результат
Vlad
По букве "в" находит только "влад", но не "Влад" или "ВЛАД"
Vlad
SELECT "id", "name", "price", "weight", "createdAt", "updatedAt", "userId" FROM "products" AS "products" WHERE "products"."name" ILIKE '%к%' LIMIT 50 OFFSET 0;
Igor
думаю проблема с локалью какой-нибудь
Igor
что пишет SHOW ALL
Igor
SHOW ALL