Aleksand
ну хз от ручки микросервиса я ожидаю что он либо 200 ответит либо ошибкой
ну это странно, смотри, если у тебя доступен редис, но недоступна БД и часть микросервисов от которых ты зависишь, то тут конечно можно не ответить на хэлс, и просто закрыть соединение но это как-то неспортивно и неинформативно, обычно принято код отдавать и в произвольной форме в теле список проблем
Aleksand
ну ответь любым не 200 какие проблемы?
ну я так я и делаю, но понимает код из списка обсуждаемых только caddy
KlonD90
ну traefik
KlonD90
только 200 считает валидным
KlonD90
Да
Sergey
Да
Лол. Бред
Aleksand
А есть исходник benchmark/logging.js?
это из пакета rufus, https://github.com/btd/rufus
KlonD90
Ну во всяком случае так следует из документации. Что в опенсурсе не всегда правда
Aleksand
А 201 тоже плохо?
обычно 2**, 3** считаются положительными а их логика уже избыточный смысл для балансера
Sergey
Но если 200 это ок а 201 нет Это уже маразм
KlonD90
я очень сомневаюсь что ручка health в удачном состояние должна вернуть что-то кроме 200
KlonD90
у ручки health одно назначение сказать что сервис жив
KlonD90
это бинарная опция в целом
Sergey
это бинарная опция в целом
В общем да. Иногда инфу несёт с собой
Aleksand
я очень сомневаюсь что ручка health в удачном состояние должна вернуть что-то кроме 200
ну тут логика такая - сервис должен явно сообщить что у него ошибка или адресата по этому пути нет, все остальное это уже логика сервиса которая балансер не тревожит
Aleksand
ты же ответив 204 не сообщил явно об ошибке, это вообще норм ответ
KlonD90
ошибки это нормально. вопрос жив ли сервис стоит ли туда роутить трафик. ошибки и прочие истории должны в мониторинг уходить
Aleksand
204 даже предпочтительнее 200 по логике хэлса
Aleksand
ошибки это нормально. вопрос жив ли сервис стоит ли туда роутить трафик. ошибки и прочие истории должны в мониторинг уходить
ну тут вопрос радикальности настройки, на мой взгляд лучше давать выбор и не ограничивать без особой нужды
Roman
ребята, привет пишу первое приложение на ноде помогите, пожалуйста разобраться с ассоциациями(sequelize + postgress) Есть моделька Card var Card = sequelize.define('Card', { name: { allowNull: false, type: DataTypes.STRING, }, }) Есть моделька Partnership var Partnership = sequelize.define('Partnership', { comment: { type: DataTypes.TEXT }, }) Задача связывать между собой Card через Partnership. Есть такие связи Card.belongsToMany(models.Partnership, { through: 'CardPartnership' }) Partnership.belongsToMany(models.Card, { through: 'CardPartnership' }) Создание Partnership const createdBy = ctx.request.body.fields.createdBy const acceptedBy = ctx.request.body.fields.acceptedBy const partnership = await models.Partnership.create({ comment: ctx.request.body.fields.comment, createdBy: createdBy, acceptedBy: acceptedBy, }) await models.Card.findAll({ where: { id:[createdBy, acceptedBy] } }).then((cards) => cards.forEach((card) => card.addPartnerships(partnership))) Если хочется получить карточку со всеми партнерами const card = await models.Card.find({ where: { id: cardId }, include: [{ model: models.Partnership, through: { where: { CardId: cardId } }, include: [{ model: models.Card, where: { id: { $not: cardId } } }] }] }) Это работает. Но хочется услышать насколько это правильная механика) Может можно проще)
Sergey
ребята, привет пишу первое приложение на ноде помогите, пожалуйста разобраться с ассоциациями(sequelize + postgress) Есть моделька Card var Card = sequelize.define('Card', { name: { allowNull: false, type: DataTypes.STRING, }, }) Есть моделька Partnership var Partnership = sequelize.define('Partnership', { comment: { type: DataTypes.TEXT }, }) Задача связывать между собой Card через Partnership. Есть такие связи Card.belongsToMany(models.Partnership, { through: 'CardPartnership' }) Partnership.belongsToMany(models.Card, { through: 'CardPartnership' }) Создание Partnership const createdBy = ctx.request.body.fields.createdBy const acceptedBy = ctx.request.body.fields.acceptedBy const partnership = await models.Partnership.create({ comment: ctx.request.body.fields.comment, createdBy: createdBy, acceptedBy: acceptedBy, }) await models.Card.findAll({ where: { id:[createdBy, acceptedBy] } }).then((cards) => cards.forEach((card) => card.addPartnerships(partnership))) Если хочется получить карточку со всеми партнерами const card = await models.Card.find({ where: { id: cardId }, include: [{ model: models.Partnership, through: { where: { CardId: cardId } }, include: [{ model: models.Card, where: { id: { $not: cardId } } }] }] }) Это работает. Но хочется услышать насколько это правильная механика) Может можно проще)
gist.github.com для кого создан?
Nikita
Ну вот епт
Nikita
Хоть бы в кавыки взял
KlonD90
ну типа помимо model, through я пользуюсь association. Ты ассоциацию к примеру в статическую переменную сохраняешь и дальше ее в инклюдах используешь
KlonD90
http://docs.sequelizejs.com/manual/tutorial/associations.html const Creator = Product.belongsTo(User, {as: 'creator'}); return Product.create({ title: 'Chair', creator: { first_name: 'Matt', last_name: 'Hansen' } }, { include: [ Creator ] });
KlonD90
господи как же раздражает этот дизайн (
Roman
https://gist.github.com/ElistratovRoman/a5ba11d2f4e725e5e819e9b34230a62e
Nikita
shiet
Nikita
поставь же
Nikita
javascript
Sergey
Sergey
https://gist.github.com/ElistratovRoman/a5ba11d2f4e725e5e819e9b34230a62e
Или ты у себя жс тоже в тхт хранишь?
Roman
)) готово
ixplo
думаю, нет :)
ixplo
разбиение регулярками делаю, тк это быстрее split оказалось
ixplo
через час выложу, и буду ждать от вас лучей добра
KlonD90
пошлите пр в sequelize документацию ( там реально беда с ней
KlonD90
Впрочем даже у платного продукта cloudflare балансер беда с документацией
KlonD90
опция есть - а в документации е нету. так еще она и обязательная
KlonD90
nice
Nikita
Ребят, ни у кого ЧИСТО СЛУЧАЙНО нет чатиков по 3д?
Андрей
На сколько плохо возвращать ошибку с сервера в виде "res.status('код').send('Текст').end();"?
🦜
end в конце не нужен вроде, send и так закончит response
Андрей
end в конце не нужен вроде, send и так закончит response
Ну тут даже не в "end()" дело, вопрос насколько это нормально?
🦜
сам только учусь, сейчас профи подойдут, может что то расскажут)
Igor
Коллеги, а есть что-то быстрое - создать тестовое API (которое возможно потом перейдет в нетестовое) аля react-create-app
Cenator 🐈
Hapi, koa
Igor
Понял, проще потратить время и написать. А всякие loopback и т.п.?
ikasymov
Ребята почему многие говорят про асинхронность в ноде словом "одновременно"? Он же с ним не имеет ничего общего, nodejs ничего не делает одновременно
ikasymov
nodejs однопоточный соотвественно он выполняет функции по очередно.
Anonymous
нет возможности строго по завершении одной функции выполнить другую функцию
Anonymous
если ты не юзаешь промисы или колбэки
Anonymous
нет
ок. как правильно?
ikasymov
eventloop так и работает, он в стеке выполняет функции по очередно, а другой процесс соответсвенно добавляет в стек новые.Я имею ввиду в асинхронном, а не асиннхронном все как в остальных языках.Я вообще имею ввиду что в ноде нету одновременности выполнение какой то функции кроме, одновременности того что может выполняться добавление новой функции в стек во время ожидание ответа от предедущего.Просто в ноде экономия времени и ресурса проц не более.Если я не прав поправьте пожалуйста
Kons
Ребята почему многие говорят про асинхронность в ноде словом "одновременно"? Он же с ним не имеет ничего общего, nodejs ничего не делает одновременно
Одно из больших заблуждений, на мой взгляд. В node ТОЛЬКО js-код выполняется в один поток. I/O происходит в других потоках операционной системы. Т.ч. действительно некоторые вещи могут происходить «одновременно» в терминах выполняемой программы.
ikasymov
да
Yar
Многопоточности быть.
ikasymov
https://www.youtube.com/watch?v=_kJeJaARUP4&list=PLDyvV36pndZFWfEQpNixIHVvp191Hb3Gg&index=20 вот тут чувак говорит полный бред
Yar
Эмм..
ikasymov
он говорит условний Вася запрашивает некую страницу и пока он ждет другие посетители не смогут запрашивать эту страницу потому что интерпитатор nodejs занять
ikasymov
не дословно но примерно так
ikasymov
но там же для каждого хоста создается своя сессия в tcp и т.д или я че то не допонимаю?
Kons
второе :)
Алексей
но там же для каждого хоста создается своя сессия в tcp и т.д или я че то не допонимаю?
Вы чего-то недопонимаете. Ну или авторо обьяснить нормально не может
Yar
автор топовый, нужно просто доразбиратся.
Андрей
Никто ещё ответить не может?
Kons
В node.js все запросы принимаются одним запущенным экземпляром приложения. А, например, в PHP каждый запрос приводит к созданию нового экземпляра приложения.
Андрей
Я не понимаю сути вопроса, если честно.
Как вернуть ошибку с сервера клиенту?